Ich versuche, eine Option aus einer Dropdownliste für die Angular e2e-Tests mit Protractor auszuwählen.
Hier ist der Codeschnipsel der Option auswählen:
<select id="locregion" class="create_select ng-pristine ng-invalid ng-invalid-required" required="" ng-disabled="organization.id !== undefined" ng-options="o.id as o.name for o in organizations" ng-model="organization.parent_id">
<option value="?" selected="selected"></option>
<option value="0">Ranjans Mobile Testing</option>
<option value="1">BeaverBox Testing</option>
<option value="2">BadgerBox</option>
<option value="3">CritterCase</option>
<option value="4">BoxLox</option>
<option value="5">BooBoBum</option>
</select>
Ich habe es versucht:
ptor.findElement(protractor.By.css('select option:1')).click();
Das gibt mir folgende Fehlermeldung:
Eine ungültige oder unzulässige Zeichenfolge wurde angegeben Build-Info: Version: '2.35.0', Revision: 'c916b9d', Zeit: '2013-08-12 15:42:01' Systeminfo: os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.9', java.version: '1.6.0_65' Treiberinfo: driver.version: unbekannt
Ich habe es auch versucht:
ptor.findElement(protractor.By.xpath('/html/body/div[2]/div/div[4]/div/div/div/div[3]/ng-include/div/div[2]/div/div/organization-form/form/div[2]/select/option[3]')).click();
Das gibt mir folgende Fehlermeldung:
ElementNotVisibleError: Element ist derzeit nicht sichtbar und kann daher nicht interagiert werden Befehlsdauer oder Timeout: 9 Millisekunden Build-Info: Version: '2.35.0', Revision: 'c916b9d', Zeit: '2013-08-12 15:42:01' Systeminfo: os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.9', java.version: '1.6.0_65' Sitzungs-ID: bdeb8088-d8ad-0f49-aad9-82201c45c63f Treiberinformationen: org.openqa.selenium.firefox.FirefoxDriver Capabilities [{platform=MAC, acceptSslCerts=true, javascriptEnabled=true, browserName=firefox, rotatable=false, locationContextEnabled=true, version=24.0, cssSelectorsEnabled=true, databaseEnabled=true, handlesAlerts=true, browserConnectionEnabled=true, nativeEvents=false, webStorageEnabled=true, applicationCacheEnabled=false, takesScreenshot=true}]
Kann mir bitte jemand bei diesem Problem helfen oder mir sagen, was ich hier falsch machen könnte.
Ich hatte ein ähnliches Problem und schrieb schließlich eine Hilfsfunktion, die Dropdown-Werte auswählt.
Ich entschied schließlich, dass ich gut nach Optionsnummer auswählen konnte, und schrieb daher eine Methode, die ein Element und die optionNumber nimmt und diese optionNumber auswählt. Wenn die optionNumber gleich Null ist, wird nichts ausgewählt (die Auswahlliste bleibt unselektiert).
var selectDropdownbyNum = function ( element, optionNum ) {
if (optionNum){
var options = element.all(by.tagName('option'))
.then(function(options){
options[optionNum].click();
});
}
};
Ich habe einen Blog-Beitrag geschrieben, in dem es auch um die Überprüfung des Textes der ausgewählten Option in einer Auswahlliste geht, falls Sie mehr Details wünschen: http://technpol.wordpress.com/2013/12/01/protractor-and-dropdowns-validation/
Um auf eine bestimmte Option zuzugreifen, müssen Sie den Selektor nth-child() angeben:
ptor.findElement(protractor.By.css('select option:nth-child(1)')).click();
Versuchen Sie dies und hoffen Sie, dass es funktioniert
element.all(by.id('locregion')).then(function(selectItem) {
expect(selectItem[0].getText()).toEqual('Ranjans Mobile Testing')
selectItem[0].click(); //will click on first item
selectItem[3].click(); //will click on fourth item
});