显然,我可以设置等待时间。有没有办法找出硒中隐含的等待时间是多少? (特别是C#)
(想法是禁用ImplicitWait,做一些事情,然后将其重置为之前的任何时间。)
答案 0 :(得分:0)
与文档(http://docs.seleniumhq.org/docs/04_webdriver_advanced.jsp)中一样:
“隐式等待是告诉WebDriver在尝试查找一个或多个元素时,如果它们不能立即可用,则在一定时间内轮询DOM。默认设置为0.一旦设置,隐式等待设置为WebDriver对象实例的生命周期。“
答案 1 :(得分:0)
如果使用Page Objects模式,请在PageBase类的字段中保持隐式等待时间,此外,您还要创建一些方法来重置或检索该值。
很抱歉,以下示例使用的是Java:
class PageBase {
private WebDriver driver;
private long implicitlyWaitTimeInSeconds;
public PageBase(WebDriver driver, long timeout) {
driver.manage().timeouts().implicitlyWait(timeout, TimeUnit.SECONDS);
implicitlyWaitTimeInSeconds = timeout;
this.driver = driver;
}
public void setImplicitlyWaitTime(long timeout) {
driver.manage().timeouts().implicitlyWait(timeout, TimeUnit.SECONDS);
implicitlyWaitTimeInSeconds = timeout;
}
public long getImplicitlyWaitTime() {
return implicitlyWaitTimeInSeconds;
}
...
}
class HomePage extends PageBase {
...
}
答案 2 :(得分:0)
这可以在Java中显示实际的超时值(加上计算时间,通常在100毫秒之内),但思路很明确:
public void getCurrentWaitTimeout() {
long milliseconds = java.time.ZonedDateTime.now().toInstant().toEpochMilli();
driver.findElements(By.cssSelector(".nonExistingElement"));
milliseconds = java.time.ZonedDateTime.now().toInstant().toEpochMilli() - milliseconds;
log.info("Current waiting timeout is {} milliseconds", milliseconds);
}
因此,您始终可以调用这种方法来确保您知道实际的超时时间,而不是您尝试设置的值。