我发现无论是使用C#还是WebDriverWait classDefaultWait 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;
            });
    }

任何建议表示感谢。在网络上,关于此特定方法的用法似乎很少,而其他人发现它在没有建议解决方法的情况下也无法使用。

最佳答案

IgnoreExceptionTypes仅在整个等待过程中持续到超时为止。我正在使用DefaultWait,就像您期望它返回null一样。它不是。当达到超时时,它将引发异常。因此,我将其包含在try catch中以在超时时适当地处理异常。

08-27 00:30