Временный обход неявных ожиданий с помощью WebDriver

При использовании неявных ожиданий,как советуется здесь , я по-прежнему иногдахочу установить ] немедленнаяневидимость или отсутствие элементов.

Другими словами, я знаю, что некоторые элементы должны быть скрыты, и хочу, чтобы мои тесты сделали это утверждение быстрым, не тратя несколько секунд из-за (в противном случае полезного) неявного ожидания.

Одна вещь, которую я попробовал, это вспомогательный метод, подобный этому:

// NB: doesn't seem to do what I want
private boolean isElementHiddenNow(String id) {
    WebDriverWait zeroWait = new WebDriverWait(driver, 0);
    ExpectedCondition c = invisibilityOfElementLocated(By.id(id));
    try {
        zeroWait.until(c);
        return true;
    } catch (TimeoutException e) {
        return false;
    }
}

Но в приведенном выше коде вызов until()возвращает только после того, как прошло неявное время ожидания, т.е. он не делает то, что я хотел.

Это единственный способ, который я нашел до сих пор, который работает:

@Test
public void checkThatSomethingIsNotVisible()  {
    turnOffImplicitWaits();
    // ... the actual test
    turnOnImplicitWaits();
}

... где, например. turnOffImplicitWaits()является помощником в общем суперклассе Selenium:

protected void turnOffImplicitWaits() {
    driver.manage().timeouts().implicitlyWait(0, TimeUnit.SECONDS);
}

Но я думаю, что это не очень элегантно. Есть ли более простой способ время от времени обходить неявное ожидание?

22
задан Jonik 2 October 2017 в 20:13
поделиться