【发布时间】:2012-11-16 00:15:35
【问题描述】:
Selenium IDE 中的 Java Junit 导出器默认设置 30 秒 implicit wait。这意味着,测试元素的断言不存在将导致不必要的延迟 30 秒。
我曾尝试使用超时时间为 1 的显式等待(WebDriverWait 类),但仍需要大约 30 秒。
那么有没有办法绕过隐式等待各种定位器(即By 类)?
【问题讨论】:
标签: java selenium selenium-webdriver
Selenium IDE 中的 Java Junit 导出器默认设置 30 秒 implicit wait。这意味着,测试元素的断言不存在将导致不必要的延迟 30 秒。
我曾尝试使用超时时间为 1 的显式等待(WebDriverWait 类),但仍需要大约 30 秒。
那么有没有办法绕过隐式等待各种定位器(即By 类)?
【问题讨论】:
标签: java selenium selenium-webdriver
如果您使用显式等待,则取消设置隐式等待:
driver.manage().timeouts().implicitlyWait(0, TimeUnit.SECONDS);
【讨论】:
boolean isElementPresent(By by) {
try {
driver.manage().timeouts().implicitlyWait(1, TimeUnit.SECONDS);
driver.findElement(by);
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
return true;
}
catch(Exception e){
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
return false;
}
}
恶心但有效。似乎每个隐式等待的命令都应该能够被重载。但 find 元素没有 2 参数版本。也许它在By?
【讨论】: