2013-11-14 2 views
6

In una pagina html ho:goniometro getText di WebElement ripetitore matrice

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

In un test e2e ho (sta tornando due elementi dell'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); 
       }) 
      }); 

La console è stampando tutte e tre le colonne, phone.name, phone.age e phone.snippet. Perché il selettore non restituisce solo phone.name?

In realtà restituisce tutto ciò che ho nella lista "li", testo normale o una rilegatura.

+0

dovrebbe essere '.column ('name')' come da esempi qui https://github.com/angular/protractor/blob/master/docs/getting- started.md # writing-tests? – Heikki

+0

No, non l'ha fatto, ancora tornando con tutto il testo – bmw0128

+2

Un problema potrebbe essere che il goniometro sta cercando di localizzare elementi lì e poiché l'elemento di avvolgimento per il collegamento 'phone.name' è' li', il suo ritorno che . Forse prova con '.column ('snippet')' e vedi se viene restituito 'p'? – Heikki

risposta

3

L'esempio tenta di individuare gli elementi con la strategia di seguito (parte di colonna è fissato come per i commenti):

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

parte ripetitore corrisponde l'elemento li e poi va a trovare elemento (s) con phone.name vincolante. L'elemento di wrapping sembra essere lo stesso li.

Modifica parte di colonna a .column('snippet') rendimenti p elementi perché phone.snippet obbligatorio è all'interno di questi.

rilevanti docs/esempi qui: https://github.com/angular/protractor/blob/master/docs/getting-started.md#writing-tests