Tymczasowe pomijanie niejawnych czeków za pomocą WebDriver
Kiedy używasz niejawnych czeków,zgodnie z zaleceniami, Ja wciążczasami chcę potwierdzićnatychmiastowy niewidzialność lub nieistnienie elementów.
Innymi słowy, jawiedzieć niektóre elementy powinny być ukryte, a moje testy sprawią, że to stwierdzenieszybki, bez wydawania kilku sekund z powodu (w inny sposób użyteczny) niejawnego oczekiwania.
Jedną z rzeczy, które próbowałem, była metoda pomocnicza:
// 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;
}
}
Ale w powyższym kodzie wezwanie dountil()
tylko wracapo upływie czasu oczekiwania, tzn. nie robi tego, co chciałem.
To jedyny sposób, w jaki do tej pory udało mi się znaleźć:
@Test
public void checkThatSomethingIsNotVisible() {
turnOffImplicitWaits();
// ... the actual test
turnOnImplicitWaits();
}
... gdzie np.turnOffImplicitWaits()
jest pomocnikiem we wspólnej superklasie Selenium:
protected void turnOffImplicitWaits() {
driver.manage().timeouts().implicitlyWait(0, TimeUnit.SECONDS);
}
Ale to nie jest zbyt eleganckie.Czy istnieje jakiś wyraźniejszy sposób na ominięcie dorozumianego oczekiwania?