2017-04-21 2 views
1

Ich verwende Winkelmesser, um ein automatisiertes Skript auszuführen, auf einer der Seiten gibt es zwei Dropdown-Menüs, die unter/übereinander. Die beiden scheinen identisch zu sein, nur dass sie verschiedene ng-Modell-Namen usw. haben. Ich kann erfolgreich ein Element aus einem der Dropdown-Menüs auswählen, aber ich kann nicht für das andere. Es macht mir ziemlich wahnsinnig, warum der eine funktioniert und der andere nicht. Hier ist der Code für die Drop-down-Menü, in dem ich ein Element auswählen kannWinkelmesser: Zwei Dropdown-Menüs auf derselben Seite, kann nur Element aus einem Dropdown-Menü erfolgreich auswählen

<select class="form-control ng-pristine ng-invalid ng-invalid-required" ng-model="user.sourceOfFunds" required="" ng-class="{submitted:invalid}"> 
 
       <option value="">Select</option> 
 
       <option value="Savings">Deposit</option> 
 
       <option value="Inherited">Current</option> 
 
       <option value="Other">Savings</option> 
 
         </select>

element(by.model('user.sourceOfFunds')).sendKeys('Savings');

Mein anderes Drop-Down-Menü ist wie folgt:

<select class="form-control ng-pristine ng-invalid ng-invalid-required" ng-model="user.investFigure" required="" ng-class="{submitted:invalid}"> 
 
         <option value="">Select</option> 
 
         <option value="<20">Less than 20K</option> 
 
         <option value="20-50">20K-50K</option> 
 
         <option value="50-100">50K-100K</option> 
 
         </select>

element(by.model('user.investFigure')).sendKeys('Less than 20K'); 
or 
element(by.model('user.investFigure')).sendKeys('20'); 

ich „Element nicht gefunden“, wenn ich versuche, ein Element aus der zweiten Dropdown-Menü auswählen. Ich bin ein bisschen ein Verlust, warum dies passiert

+0

Sind Sie sicher, dass das zweite Dropdown auf der Seite zu der Zeit vorhanden ist, Sie Schlüssel, um es senden? Was wäre, wenn Sie alle 'select' Elemente finden würden:' $$ ("select"). Map (function (elm) {return elm.getAttribute ("ng-model");}). Dann (console. log); '- sehen Sie beide Dropdown-Modelle gedruckt? Vielen Dank. – alecxe

+0

Danke für die Antwort, als ich den Code lief, den Sie geliefert haben. Es werden nur die Elemente gedruckt, die im Dropdown-Menü user.sourceOfFunds enthalten sind. – Edmond

+0

Großartig, das erklärt den Fehler. Lassen Sie uns einen Schnelltest machen, setzen Sie 'browser.sleep (10000);' vor dieser Aussage - noch kein zweites Dropdown-Modell gedruckt? – alecxe

Antwort

1

Mit sendKeys wählen Sie eine Dropdown-Option scheint mir seltsam, auch wenn es funktioniert. Gegebene @ Alecxe feine Vorschläge, vielleicht ist das Problem Sichtbarkeit, aber versuchen Sie einen anderen Weg und sehen, ob sendKeys Ihr Problem ist.

Ich verwende diesen Code bei Tests mit mehreren Auswahlen jeden Tag ohne Problem. Vielleicht wird es für Sie arbeiten ...

var selectOptionByText = function(text) { 
    return element(by.cssContainingText('option', text)).click(); 
}; 

Anruf thusly ...

selectOptionByText('Less than 20'); 
selectOptionByText('20'); 
+1

Danke für die Antwort, funktioniert das oben, wenn ich es für die "Einsparungen" Dropdown-Menü, aber wenn ich es für selectOptionByText ('Weniger als 20') verwenden; selectOptionByText ('20 '); Ich bekomme "Element ist momentan nicht sichtbar und darf nicht manipuliert werden" – Edmond

Verwandte Themen