如果没有WebDriver对象,我可以抑制隐式超时吗?

时间:2012-11-01 19:31:11

标签: java selenium webdriver

WebDriver API表示使用findElements来检查WebElement是否存在。此方法受隐式超时值的限制。因此,如果我想编写一个检查存在的方法,并且我不希望该方法等待隐式超时,我可以像这样暂时禁止它:

protected boolean doesElementExist(By by) {
    // Temporarily set the implicit timeout to zero
    driver.manage().timeouts().implicitlyWait(0, TimeUnit.MILLISECONDS);
    // Check to see if there are any elements in the found list
    boolean exists = driver.findElements(by).size() > 0;
    // Return to the original implicit timeout value
    driver.manage().timeouts()
            .implicitlyWait(Properties.TIMEOUT_TEST, TimeUnit.SECONDS);
    return exists;
}

但这需要您WebDriver来管理超时值。我目前正在将上述方法移动到By的自定义子类Locator中,以便我可以从驱动程序或特定的WebElement调用这些方法,并且这样我也可以可以使用正则表达式匹配和其他形式的信息检索来扩展Locator

问题是,在我的Locator课程中,我没有WebDriver,我有SearchContext。我想应该有一种方法可以在findElements的上下文中改变超时 - 或者使用自定义超时调用WebElement之类的东西。有这样的方式吗?或者,我是否必须在我的自定义WebDriverWebElement实现(为了使这些新方法可用)中实现这些方法的实现中抑制超时值?谢谢!

0 个答案:

没有答案