here でアドバイスされているように、暗黙の待機を使用する場合でも、要素の即時の非表示または非存在をアサートしたい場合があります。
言い換えれば、いくつかの要素を非表示にする必要があることを知っており、(そうでなければ便利な) 暗黙の待機のために数秒を費やすことなく、テストでそのアサーションを高速にしたいと考えています。
私が試したことの1つは、次のようなヘルパーメソッドでした:
// 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()
にのみ への呼び出しが返されます。
これは私がこれまでに見つけた唯一の方法です。
@Test
public void checkThatSomethingIsNotVisible() {
turnOffImplicitWaits();
// ... the actual test
turnOnImplicitWaits();
}
...例turnOffImplicitWaits()
は、一般的なSeleniumスーパークラスのヘルパーです。
protected void turnOffImplicitWaits() {
driver.manage().timeouts().implicitlyWait(0, TimeUnit.SECONDS);
}
しかし、それはあまりエレガントではないと思います。暗黙の待機を時々バイパスするよりクリーンな方法はありますか?