2015-12-16 8 views
7

Come posso ottenere il modello ng in ng-repeat con goniometro?Ottieni modello ng in ng-repeat con Goniometro

<div ng-repeat="field in master.linker | orderBy:'country.name'"> 
    <div> 
     <p> {{ field.country_name }} </p> 
     <input ng-model="field.text"> 
    </div> 
</div> 

Io uso questo, ma senza successo:

var result = element.all(by.repeater('field in master.linker').column('field.text')); 

result.forEach(function(entry) { 
    console.log(entry); 
}); 

Vorrei confrontare:

result.forEach(function(entry) { 
    if (entry.country_name === 'en') {  
     expect(entry.text (from ng-repeat)).to.eventually.equal(value) 
    } 
}); 

risposta

5

Il .column() avrebbe funzionato solo per binding s, non i model s.

Nel tuo caso, utilizzare il by.model() locator:

var result = element.all(by.repeater('field in master.linker')); 

result.each(function(entry) { 
    var input = entry.element(by.model("field.text")); 

    // do smth with the input 
}); 

Se si desidera ottenere i valori di input, utilizzare map():

var inputValues = result.map(function(entry) { 
    return entry.element(by.model("field.text")).getAttribute("value"); 
}); 

// printing out input values 
inputValues.then(function (values) { 
    console.log(values); 
}); 

Rispondendo alla domanda aggiuntiva da un commento:

Ho un array, senza altri campi dalla mia ng-repeat, come posso confrontare "if (field.country_name ===" "en") {expect (field.text) .to.eventually.equal (value)} "?

Uso filter():

var fields = element.all(by.repeater('field in master.linker')); 
fields.filter(function (field) { 
    return field.element(by.binding("field.country_name")).getText().then(function (country) { 
     return country === "en"; 
    }); 
}).then(function (filteredFields) { 
    var input = filteredFields[0].element(by.model("field.text")); 
    expect(input.getAttribute("value")).to.eventually.equal(value); 
});; 
+0

@ JérémieChazelle dispiace, aggiornato. – alecxe

+0

Ho un oggetto ptor: {ptor_: {controlFlow: [Funzione], –

+0

@ JérémieChazelle se stai provando a stampare 'input', certo - lo otterrai dato che si tratta di un'istanza di' ElementFinder'. Qual è il tuo output desiderato? I valori degli input? Grazie. – alecxe

Problemi correlati