【问题标题】:How to Wait for an Alert in Selenium WebDriver with C#?如何使用 C# 在 Selenium WebDriver 中等待警报?
【发布时间】:2021-08-17 16:23:03
【问题描述】:

如何将 Selenium WebDriver 设置为在接受警报而不是 Thread.Sleep 之前等待警报?

作为网站,有时加载很慢或有时很快。

谢谢

【问题讨论】:

    标签: c# winforms selenium-webdriver webdriver selenium-chromedriver


    【解决方案1】:

    您应该应用 webdriver 等待警报正确出现。

    var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(15));
    wait.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.AlertIsPresent());
    

    或编写一个布尔函数来检查警报是否存在并将其用于等待

    bool IsAlertShown(WebDriver driver) {
        try {
            driver.SwitchTo().Alert();
        } catch(NoAlertPresentException e) {
            return false;
        }
        return true;
    }
    

    如下使用

    var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(20));
    wait.Until(driver => IsAlertShown(driver));
    

    【讨论】:

    【解决方案2】:

    你可以使用'WebDriverWait'

    IWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(3))
    IWebElement element = wait.Until(driver => driver.FindElement(By.Name("q")));
    

    https://selenium.dev/selenium/docs/api/dotnet/html/T_OpenQA_Selenium_Support_UI_WebDriverWait.htm

    【讨论】:

    • 感谢您分享答案。但是,我想等待驱动程序,直到警报加载。有时,页面先加载,然后警报加载缓慢。 @Sergiy Matvienko
    猜你喜欢
    • 1970-01-01
    • 2013-12-31
    • 1970-01-01
    • 1970-01-01
    • 2012-01-04
    • 2012-05-11
    • 2014-04-04
    • 1970-01-01
    相关资源
    最近更新 更多