有没有办法找出硒中隐含的等待时间是多少?

时间:2014-09-16 21:23:51

标签: c# selenium selenium-webdriver

显然,我可以设置等待时间。有没有办法找出硒中隐含的等待时间是多少? (特别是C#)

(想法是禁用ImplicitWait,做一些事情,然后将其重置为之前的任何时间。)

3 个答案:

答案 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);
}

因此,您始终可以调用这种方法来确保您知道实际的超时时间,而不是您尝试设置的值。