Временно обходя неявные ожидания с 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?

Ответы на вопрос(6)

Ваш ответ на вопрос