我在C#
中发现无论是使用WebDriverWait class
还是DefaultWait class
,在任何一种情况下,IgnoreExceptionTypes
方法似乎都无效。
即。在任何一种情况下,当针对我的页面运行时,StaleElementReferenceException
被抛出,尽管我指示代码忽略这些异常。
WebDriverWait
示例:
public void WaitElementToBeClickable(IWebElement element)
{
var wait = new WebDriverWait(Driver, TimeSpan.FromSeconds(60));
wait.IgnoreExceptionTypes(typeof(NoSuchElementException), typeof(StaleElementReferenceException));
wait.Until(ExpectedConditions.ElementToBeClickable(element));
}
DefaultWait示例:
public IWebElement SafeWaitForDisplayed(IWebElement webElement) {
var w = new DefaultWait<IWebElement>(webElement);
w.Timeout = TimeSpan.FromSeconds(30);
w.IgnoreExceptionTypes(typeof(NoSuchElementException), typeof(StaleElementReferenceException));
return w.Until(ctx =>
{
var elem = webElement;
if (elem.Displayed)
return elem;
else
return null;
});
}
感激地收到任何建议。网络上似乎没有关于这种特定方法的使用情况,而其他人发现它没有工作也没有建议的解决方法。
答案 0 :(得分:3)
IgnoreExceptionTypes
只会持续等待,直到超时为止。我正在使用DefaultWait
,就像你期望它返回null一样。它不是。达到超时后,它将抛出异常。因此,我将它包含在try catch中,以便在超时时适当地处理异常。