首页 文章

WebDriverWait在对象初始化时指定的时间 Span 之前抛出异常

提问于
浏览
0

我正在使用selenium WebDriverWait对象来动态控制代码中对象检测的超时 . 但是,此对象在WebDriverWait对象中指定的时间 Span 消失之前超时 . 对于前者我的对象初始化为10秒超时时间 Span ,但对象在大约2秒内超时 .

这是我的代码

WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
try
{
  wait.Until(drv => (drv.FindElement(By.XPath(".//*[@class='TopTitle']"))));   //drv.FindElement(By.XPath(".//*[@class='TopTitle']")) throws exception
}
catch
{
  //exception handlers
}

我在调试模式下运行它,我可以在2-3秒内清楚地看到 drv.FindElement(By.XPath(".//*[@class='TopTitle']"))

异常和堆栈跟踪:

无法在OpenQA上的OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(响应errorResponse)中找到元素:{“method”:“xpath”,“selector”:“.//* [@ class ='TopTitle']”} OpenQA.Selenium的OpenQA.Selenium.Remote.RemoteWebDriver.FindElementByXPath(String xpath)中的OpenQA.Selenium.Remote.RemoteWebDriver.FindElement(String mechanism,String value)中的.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute,Dictionary parameters) . 位于VS.UnitTest.Navigation的OpenQA.Selenium.Remote.RemoteWebDriver.FindElement(By by)的OpenQA.Selenium.By.FindElement(ISearchContext上下文)中的 . <c_DisplayClasse.b_c(ISearchContext上下文) . <> c_DisplayClass2.b_0(IWebDriver) dr:)在C:\ Git \ WebadminTests \ WebAdminTests \ Navigation.cs:第511行,OpenQA.Selenium.Support.UI.DefaultWait.Until [TResult](Func条件)

1 回答

  • 0

    WebDriverWait仅处理某些类型的异常 . 您需要使用FluentWait.ignoring功能自己处理其他类型(WebDriverWait是FluentWait的扩展) . 如果查看源代码,WebDriverWait似乎只忽略NotFoundException.class . 要忽略other exceptions,您需要添加一个catch类(或一个通用的catch子句) . 注意:在TimeoutException的情况下...不要在ignoring子句中使用它,而是将WebDriverWait包装在try-catch中,并在等待之外捕获TimeoutException .

相关问题