gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 07:26:30 27 4
gpt4 key购买 nike

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

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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com