В коде веб-драйвера, если я использую thread.sleep(20000). Он ждет 20 секунд, и мой код тоже работает нормально. Чтобы заархивировать то же самое, если я использую неявное ожидание, например
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
Он не ждет принудительно 20 секунд и переходит к следующим шагам всего за 3-4 секунды. и страница все еще загружается.
Это проводная ситуация, так как я использую свободное ожидание, чтобы найти некоторые элементы. если элементы все еще загружаются на страницу, это не показывает ошибку и делает тест пройденным.
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"));
}
});
Но если я скажу неправильный идентификатор, он будет ждать 50 секунд, но другой тест будет пройден без щелчка ... он не показывает никакой ошибки.
Мой вопрос заключается в том, как мне следует избегать Thread.sleep(), поскольку другие методы селена мне не помогают.