2013-11-14 4 views
6

in einer HTML-Seite, die ich habe:Protractor getText von WebElement in Repeaters Array

<ul class="phones"> 
       <li ng-repeat="phone in phones | filter:query | orderBy: orderProp"> 
       {{phone.name}} - {{phone.age}} 
       <p>{{phone.snippet}}</p> 
       </li> 
      </ul> 

In einem E2E testen I (kehrt zwei Elemente in dem Array):

  var result= ptor.findElements(protractor.By.repeater('phone in phones').column('phone.name')); 

      result.then(function(arr) { 
       arr[0].getText().then(function(text) { 
        console.log("*** 1: "+ text); 
       }); 

       arr[1].getText().then(function(text) { 
        console.log("*** 2: "+ text); 
       }) 
      }); 

Die Konsole ist Drucken aller drei Spalten, phone.name, phone.age und phone.snippet. Warum gibt der Selektor nicht nur phone.name zurück?

Seine tatsächlich zurück, was auch immer ich in der Liste "li", Klartext oder eine Bindung habe.

+0

Sollte es sein '.Column ('name')' gemäß Beispiele hier https://github.com/angular/protractor/blob/master/docs/getting- started.md # Schreibtests? – Heikki

+0

Nein, das hat es nicht gemacht, immer noch mit dem ganzen Text zurück – bmw0128

+2

Ein Problem könnte sein, dass der Winkelmesser versucht, dort Elemente zu lokalisieren, und da das Umhüllungselement für 'phone.name' bindend ist, gibt es das zurück . Vielleicht versuchen Sie es mit '.column ('snippet')' und sehen Sie, ob 'p' zurückgegeben wird? – Heikki

Antwort

3

Das Beispiel versucht, Elemente mit der Strategie unter (Säulenteil gemäß Kommentaren befestigt ist) zu suchen:

protractor.By.repeater('phone in phones').column('name') 

Repeater Teil entspricht das li Element und geht dann Element zu finden (s) mit phone.name Bindung. Es ist ein Umhüllungselement, das dasselbe ist li.

Ändern Spalte Teil zu .column('snippet') gibt Elemente zurück, weil phone.snippet Bindung innerhalb von denen gefunden wird.

Relevante docs/examples hier: https://github.com/angular/protractor/blob/master/docs/getting-started.md#writing-tests