IgnoreExceptionTypes不起作用(C#Webdriver)

时间:2015-07-30 10:28:14

标签: c# selenium selenium-webdriver webdriver

我在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;
            });
    }

感激地收到任何建议。网络上似乎没有关于这种特定方法的使用情况,而其他人发现它没有工作也没有建议的解决方法。

1 个答案:

答案 0 :(得分:3)

IgnoreExceptionTypes只会持续等待,直到超时为止。我正在使用DefaultWait,就像你期望它返回null一样。它不是。达到超时后,它将抛出异常。因此,我将它包含在try catch中,以便在超时时适当地处理异常。