Estoy tratando de seleccionar una opción de un desplegable para las pruebas de angular e2e utilizando protractor.
Aquí está el fragmento de código de la opción de selección:
<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>
Lo he intentado:
ptor.findElement(protractor.By.css('select option:1')).click();
Esto me da el siguiente error:
Se ha especificado una cadena no válida o ilegal Build info: version: '2.35.0', revision: 'c916b9d', time: '2013-08-12 15:42:01' Información del sistema: os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.9', java.version: '1.6.0_65' Información del controlador: driver.version: unknown
También he probado:
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();
Esto me da el siguiente error:
ElementNotVisibleError: Element is not currently visible and so may not be interacted with Duración del comando o tiempo de espera: 9 milisegundos Información de compilación: versión: '2.35.0', revisión: 'c916b9d', hora: '2013-08-12 15:42:01' Información del sistema: os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.9', java.version: '1.6.0_65' ID de sesión: bdeb8088-d8ad-0f49-aad9-82201c45c63f Información del controlador: 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}]
¿Puede alguien por favor me ayude con este problema o arrojar algo de luz sobre lo que podría estar haciendo mal aquí.
Tuve un problema similar, y finalmente escribí una función de ayuda que selecciona valores desplegables.
Finalmente decidí que estaba bien seleccionando por número de opción, y por lo tanto escribí un método que toma un elemento y el optionNumber, y selecciona ese optionNumber. Si el optionNumber es null no selecciona nada (dejando el desplegable sin seleccionar).
var selectDropdownbyNum = function ( element, optionNum ) {
if (optionNum){
var options = element.all(by.tagName('option'))
.then(function(options){
options[optionNum].click();
});
}
};
Escribí una entrada de blog si quieres más detalles, también cubre la verificación del texto de la opción seleccionada en un desplegable: http://technpol.wordpress.com/2013/12/01/protractor-and-dropdowns-validation/
Usted puede intentar esto espero que funcione
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
});