显式等待在selenium webdriver 2.37中无法正常工作?

时间:2013-11-05 02:21:40

标签: c# selenium

我有一个方法,在元素存在之前显式等待。它工作正常,直到我将驱动程序升级到2.37。问题是即使我在我的方法中传递超时参数,它似乎没有等待那么久,而是抛出“elementNotFound”异常。我相信它仍然使用默认的webdriver超时。下面是我在我的方法中使用的代码(这不是我的原始代码,我从stackoverflow中获取它)。我甚至尝试过TimeSpanFromMInutes,它似乎没有等待那么久。在2.37中有什么东西被破坏了吗?

public static IWebElement FindElement(this IWebDriver driver, By by, int timeoutInSeconds)
    {
        if (timeoutInSeconds > 0)
        {
            var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(timeoutInSeconds));
            wait.IgnoreExceptionTypes(typeof(NoSuchElementException));
            return wait.Until(drv => drv.FindElement(by));
        }
        return driver.FindElement(by);
    }`

1 个答案:

答案 0 :(得分:0)

我不能说为什么它停止工作,但您可以使用ExpectedConditions来查看元素是否存在。我测试了它,似乎在2.37中工作:

if (timeoutInSeconds > 0)
{
    var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(timeoutInSeconds));
    wait.IgnoreExceptionTypes(typeof(OpenQA.Selenium.NoSuchElementException)); 
    return wait.Until(ExpectedConditions.ElementExists(by));
}
return driver.FindElement(by);