3

我有一个显式等待元素存在的方法。在我将驱动程序升级到 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);
    }`
4

1 回答 1

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);
于 2013-11-05T03:11:09.423 回答