Временно обходя неявные ожидания с WebDriver
При использовании неявных ожиданий,как советовали здесь, Я по-прежнемуsometimes хочу отстаиватьimmediate невидимость или несуществование элементов.
Другими словами, яknow некоторые элементы должны быть скрыты, и я хочу, чтобы мои тесты сделали это утверждениеfast, не тратя несколько секунд из-за (полезного) неявного ожидания.
Одна вещь, которую я попробовал, была вспомогательным методом, подобным этому:
// NB: doesn't seem to do what I want
private boolean isElementHiddenNow(String id) {
WebDriverWait zeroWait = new WebDriverWait(driver, 0);
ExpectedCondition<Boolean> c = invisibilityOfElementLocated(By.id(id));
try {
zeroWait.until(c);
return true;
} catch (TimeoutException e) {
return false;
}
}
Но в приведенном выше коде, вызовuntil()
только возвращаетсяafter the implicit wait time has passedто есть он не выполняет то, что я хотел.
Это единственный способ, который я до сих пор нашел, который работает:
@Test
public void checkThatSomethingIsNotVisible() {
turnOffImplicitWaits();
// ... the actual test
turnOnImplicitWaits();
}
... где, например,turnOffImplicitWaits()
вспомогательный суперкласс Selenium:
protected void turnOffImplicitWaits() {
driver.manage().timeouts().implicitlyWait(0, TimeUnit.SECONDS);
}
Но это не очень элегантно, я думаю.Is there any cleaner way to bypass the implicit wait occasionally?