Tengo un control de selección en mi sitio. Estoy usando objetos de página para interactuar con la página. Si lo hago (con las 2 primeras líneas en mi clase y la selectByValue
en mi método)elemento selectivo de Selenium webdriver
@FindBy(id="foo")
private Select foo;
foo.selectByValue("myValue");
falla con un puntero nulo. También lo intenté sin el @FindBy
.
si hago esto en mi método funciona todo bien y se selecciona el elemento correcto
Select foo = new Select(sDriver.findElement(By.id("foo")));
foo.selectByValue("myValue");
Aquí es el fragmento real de la web para que el control (editado para proteger a los inocentes)
<select id="foo" name="service_name">
<option selected="selected" value="one">one</option>
<option value="two">two</option>
<option value="three">three</option>
</select>
Déjeme decir que tengo un problema para mi problema pero No entiendo por qué la ruta "normal" no funciona.
ahh que tiene sentido sólo parecía que debería haber trabajado por lo que nunca realmente cavado a lo profundo Mi culpa. Gracias – ducati1212
Nota: si incluye la declaración Select y el lanzamiento en su clase, justo debajo de la declaración privada de WebElement, obtendrá errores de tiempo de ejecución cuando se crea una instancia de la clase; para evitar esto, puede poner la declaración Seleccionar y la clase en el método que hace la interacción con el control de pantalla. Una vez más, no es ideal, pero parece funcionar. –
con este enfoque, los objetos de página se deben inicializar después de que la página se haya cargado completamente y que el objeto esté presente y visible en el controlador. Para obtener un proxy, echa un vistazo a [mi implementación] (http://stackoverflow.com/questions/35931667/select-object-on-seleniums-pagefactory/36004572#36004572) – rrw