Ho un controllo di selezione sul mio sito. Sto usando gli oggetti della pagina per interagire con la pagina. Se faccio (con le prime 2 righe sotto la mia classe e la selectByValue
nel mio metodo)selenio web select select
@FindBy(id="foo")
private Select foo;
foo.selectByValue("myValue");
Non riesce con un puntatore nullo. Ho anche provato senza lo @FindBy
.
Ora, se faccio questo nel mio metodo tutto funziona bene e seleziona la voce corretta
Select foo = new Select(sDriver.findElement(By.id("foo")));
foo.selectByValue("myValue");
Ecco il frammento di effettiva web per il controllo (a cura di proteggere gli innocenti)
<select id="foo" name="service_name">
<option selected="selected" value="one">one</option>
<option value="two">two</option>
<option value="three">three</option>
</select>
Lasciatemi dire che ho un problema con il mio numero ma Non capisco perché il percorso "normale" non funzioni.
ahh che ha senso mi sembrava come dovrebbe avere lavorato così non ho mai veramente scavato in profondità. Colpa mia. Grazie – ducati1212
Nota: se si include la dichiarazione Select e il cast nella classe, appena sotto la dichiarazione WebElement privata, si otterranno errori di runtime quando la classe viene istanziata; per evitare ciò, è possibile inserire la dichiarazione e la classe Select nel metodo che interagisce con il controllo dello schermo. Anche in questo caso non è l'ideale, ma sembra funzionare. –
con questo approccio, i pageobjects devono essere inizializzati dopo che la pagina è stata caricata completamente e che l'oggetto è presente e visibile nel driver. Per avere un proxy, dai un'occhiata a [la mia implementazione] (http://stackoverflow.com/questions/35931667/select-object-on-seleniums-pagefactory/36004572#36004572) – rrw