c# - WebDriverWait 如何等到项目存在或不存在?

标签 c# selenium selenium-webdriver

我正在使用 Selenium WebDriver 运行测试,如果用户没有访问权限,则页面上不存在 div。我正在尝试等待,以便在显示该项目时返回 true,但如果达到超时则返回 false。

    public bool SummaryDisplayed()
    {
        var wait = new WebDriverWait(_driver, TimeSpan.FromSeconds(5));
        var myElement = wait.Until(x => x.FindElement(By.Id("summaryPage")));
        return  myElement.Displayed;
    }

我不想使用 Thread.Sleep,因为如果元素在 2 秒后存在,我希望它继续。但如果该元素在 5 秒后不存在,它应该返回 false。我不希望它抛出异常,在某些测试用例中我希望它不存在。有没有办法可以抑制异常并在超时后返回 false? 谢谢

最佳答案

我想这对你有用。

public bool SummaryDisplayed()
{
    try
    {
        var wait = new WebDriverWait(_driver, TimeSpan.FromSeconds(5));
        var myElement = wait.Until(x => x.FindElement(By.Id("summaryPage")));
        return  myElement.Displayed;
    }
    catch
    {
        return false;
    }
}

关于c# - WebDriverWait 如何等到项目存在或不存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19573943/

相关文章:

c# - C#中的"MoveFile"函数(重启后删除文件)

python - 如何更改像按钮一样的跨度文本

c# - 如何最有效(快速)匹配2个列表?

java - 如何限制(队列)针对给定数据库执行的线程数量(每个并发测试的单独数据)?

c# - 使用 Selenium 2 的 IWebDriver 与页面上的元素进行交互

python - 使用 selenium 在 Chrome 中接受对麦克风的请求

python - 单击并下载 Selenium Python 列表中的所有项目

java - 从网页中获取文本的背景颜色

c# - "{0:MM dd yyyy}"中的 0 有什么作用?

c# - 为什么绑定(bind)数据上下文设置为控件的数据上下文?