Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 显式等待在selenium webdriver 2.37中不起作用?_C#_Selenium - Fatal编程技术网

C# 显式等待在selenium webdriver 2.37中不起作用?

C# 显式等待在selenium webdriver 2.37中不起作用?,c#,selenium,C#,Selenium,我有一个方法,它显式地等待元素存在。在我把我的驱动升级到2.37之前,它工作得很好。问题是,即使我在方法中传递timeout参数,它似乎也不会等待那么长时间,而是抛出“elementNotFound”异常。我相信它仍然使用默认的webdriver超时。下面是我在方法中使用的代码(这不是我的原始代码,我是从stackoverflow获取的)。我甚至尝试了TimeSpanFromMInutes,它似乎没有等那么久。2点37分有什么东西坏了吗 public static IWebElement Fin

我有一个方法,它显式地等待元素存在。在我把我的驱动升级到2.37之前,它工作得很好。问题是,即使我在方法中传递timeout参数,它似乎也不会等待那么长时间,而是抛出“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);
    }`

我不能说它为什么停止工作,但是您可以使用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,您能解释一下隐式等待如何影响显式等待吗?谢谢