我有一个方法,在元素存在之前显式等待。它工作正常,直到我将驱动程序升级到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);
}`
答案 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);