いいえ、あなたがすることはできません。
implicit
待機時間は、明示的な待機よりも優先されます。時間が 30 秒の場合、implicit
実行するすべての検索は、要素が存在しない場合に少なくとも 30 秒かかります。あなたができることはimplicit
、フレームワークの待機時間を操作することですが、それが IDE でどのように機能するかはわかりません。私はそれを使用したことがありません。
結果とともにを返すカスタム メソッドを作成しましたboolean
。入力は、 WebDriver (CSS、xpath など) でサポートされている任意のBy ロケーターです。または、必要に応じて変更することもできます。
私のコードをよりクリーンで高速にするのに役立ちました。他の人にも役立つことを願っています。
デフォルトpooling
は 500 ミリですが、オブジェクトで変更できwait
ます。
public boolean isElementNotPresent(final By locator) {
boolean result = false;
// use your custom timeout here
long timeout = ConfigurationProvider.getWebDriverWaitTimeout();
// log4j used
msg = "isElementNotPresent: " + locator;
LOG.info(msg);
Wait<WebDriver> wait = new FluentWait<WebDriver>(
getDriver()).withTimeout(timeout, TimeUnit.SECONDS);
try {
result = wait.until(new Function<WebDriver, Boolean>() {
@Override
public Boolean apply(WebDriver driver) {
return driver.findElements(locator).size() == 0;
}
});
} catch (TimeoutException e) {
msg = String.format("Element remained visible after %.2f seconds",
((float) timeout / 1000));
LOG.debug(msg);
} catch (Exception e) {
msg = "Exception at isElementNotPresent()\n" + e.getMessage();
// I use jUnit to fail my test
Assert.fail(msg);
}
return result;
};