C# 显式等待在selenium webdriver 2.37中不起作用?
我有一个方法,它显式地等待元素存在。在我把我的驱动升级到2.37之前,它工作得很好。问题是,即使我在方法中传递timeout参数,它似乎也不会等待那么长时间,而是抛出“elementNotFound”异常。我相信它仍然使用默认的webdriver超时。下面是我在方法中使用的代码(这不是我的原始代码,我是从stackoverflow获取的)。我甚至尝试了TimeSpanFromMInutes,它似乎没有等那么久。2点37分有什么东西坏了吗C# 显式等待在selenium webdriver 2.37中不起作用?,c#,selenium,C#,Selenium,我有一个方法,它显式地等待元素存在。在我把我的驱动升级到2.37之前,它工作得很好。问题是,即使我在方法中传递timeout参数,它似乎也不会等待那么长时间,而是抛出“elementNotFound”异常。我相信它仍然使用默认的webdriver超时。下面是我在方法中使用的代码(这不是我的原始代码,我是从stackoverflow获取的)。我甚至尝试了TimeSpanFromMInutes,它似乎没有等那么久。2点37分有什么东西坏了吗 public static IWebElement Fin
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);
}`
我不能说它为什么停止工作,但是您可以使用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);
谢谢是的,预期的条件似乎正在发挥作用。至少,它似乎在等待超时。是否需要向Selenium社区报告此问题?您应该对其进行调试。在
if
中放置断点,并确保它正在命中它。您也不需要忽略任何异常类型,它已经为您完成了。另外,驱动程序是否设置了任何隐式等待?我进行了调试,是的,它到达了if语句内部,但它只是没有按照timeout参数中的定义等待足够长的时间。它看起来像一个bug(预期条件)工作非常完美。这是运行了至少3-4个月的同一个代码,但突然升级到2.37就破坏了它。该代码在v2.37中没有更改:……您使用的预期条件与您的初始代码完全相同:……您好@Arran,您能解释一下隐式等待如何影响显式等待吗?谢谢