unit-testing - Wait Until 不存在,不适用于 Selenium C#

标签 unit-testing selenium selenium-webdriver webdriver

我正在尝试测试加载微调器是否仍在页面上,因此当它消失时我可以检查其他元素,但如果我使用类似的东西:

WebDriverWait wait = new WebDriverWait(this.Driver, TimeSpan.FromMinutes(2));
wait.Until(driver => !driver.FindElement(By.CssSelector(css)).Displayed);

它抛出 NoSuchElementException,当我尝试检查元素是否存在时遇到了类似的错误,而不使用 ! 并且它还会在其他一些部分抛出错误的代码。

似乎 Until 没有正常工作,因为它等待 2 分钟后抛出异常,而元素就在那里。

最佳答案

问题是 FindElement 会在找不到元素时抛出异常,这与正在找到的元素不同不是正在展示。

WebDriverWait 将允许您指定可以忽略的异常。所以:

WebDriverWait wait = new WebDriverWait(this.Driver, TimeSpan.FromMinutes(2));
wait.IgnoreExceptionTypes(typeof(NoSuchElementException));

另一种选择是在您的代码中更具防御性。元素有多个状态,所以像 try/catch 这样的东西会起作用。

最后一个选择是使用 ExpectedConditions(一组手工制作的“基本”条件供您使用):

wait.Until(driver => ExpectedConditions.ElementIsVisible(css));

关于unit-testing - Wait Until 不存在,不适用于 Selenium C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28146125/

相关文章:

ios - Appium 错误 :main. js:错误:无法识别的参数:--no-session-override

python - Selenium Python = 在无限滚动中单击按钮 "ShowMore"时出现问题

unit-testing - 如何对 Excel VBA 代码进行单元测试

java - 为什么元素不能定位在selenium的方法函数中?

java - 仅在 Chrome 浏览器中无法在 Iframe 标记下找到元素 (html)

java - Selenium Webdriver click()没有做任何事情

java - webdriver 3 beta2 无法关闭窗口

javascript - Jest - 调用模拟函数不计算在内

java - Camel处理器单元/集成测试

java - 如果 TestNG @BeforeClass 不是直接父类,则不会从父类(super class)运行