Nel codice di webdriver se utilizzo thread.sleep(20000)
. Aspetta 20 secondi e anche il mio codice funziona correttamente. Per archiviare lo stesso se io uso attesa implicita comewebdriver implicitAttendere il funzionamento come previsto
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
Non sta aspettando con forza per 20 secondi e va a passi successivi solo in 3 o 4 secondi. e la pagina si sta ancora caricando.
Questa è la situazione cablata mentre sto usando una fluente attesa per trovare alcuni elementi. se gli elementi ancora caricati nella pagina non mostrano errori e fanno passare il test.
Wait<WebDriver> wait = new FluentWait<WebDriver>(driver)
.withTimeout(50, TimeUnit.SECONDS)
.pollingEvery(5, TimeUnit.SECONDS)
.ignoring(NoSuchElementException.class);
WebElement foo = wait.until(new Function<WebDriver, WebElement>() {
public WebElement apply(WebDriver driver) {
return driver.findElement(By.id("jxxx"));
}
});
Ma se dico id sbagliato attende per 50 secondi, ma altri test ottenuto superato senza fare clic .. è non mostrando alcun errore.
mia domanda è come devo evitare Thread.sleep()
come altri metodi di selenio non mi stanno aiutando ..
grazie per aver esaminato questo @JimEvans, ho modificato il mio codice e ora sto usando solo un'attesa fluente, ma non ci sono errori e non faccio nulla. – user2254173