我发现在C#中是使用webdriverwait类还是DefaultWait类,在任何一种情况下,IgnoreExceptionTypes方法似乎都不起作用.
即在任何一种情况下,当对我的页面运行时,抛出StaleElementReferenceException,尽管我指示代码忽略这些异常.
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中,以便在超时时适当地处理异常.
原文地址:https://www.jb51.cc/c/118256.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。