具有DesiredCapabilities的Selenium C#chromedriver

时间:2017-02-05 19:00:16

标签: c# selenium automated-tests

我想在C#中使用chrome驱动程序实例实现DesiredCapabilities,但我发现它不可能吗?例如......

DesiredCapabilities capabilities = DesiredCapabilities.Chrome();
capabilities.SetCapability(CapabilityType.UnexpectedAlertBehavior, "accept");               
Driver = new ChromeDriver(@"C:\Development\Projects\SeleniumObservatoryTests\", capabilities);

ChromeDriver似乎需要选项。有没有办法提供UnexpectedAlertBehavior作为选项?

2 个答案:

答案 0 :(得分:0)

我无法让它适用于Chrome。对于Firefox,我必须使用DesiredCapabilities,而对于IE,我必须使用InternetExplorerOptions。

但是,我已经成功地使用Chrome处理弹出窗口,我编写了一些代码来处理它。

我的代码发布在下面。我希望它可以帮助你和其他困扰Modal对话框的人。

    /// <summary>
    /// Returns a true or false if alert is present.
    /// </summary>
    /// <returns>true or false</returns>
    public static bool IsAlertPresent()
    {
        try
        {
            [YOUR DRIVER HERE].SwitchTo().Alert();
            return true;
        }
        catch (Exception)
        {
            return false;
        }
    }

    /// <summary>
    /// Verifies if an alert is present or not.  If it is, it clicks "Accept".
    /// </summary>
    public static void Alert()
    {
        try
        {
            if (IsAlertPresent())
                [YOUR DRIVER HERE].SwitchTo().Alert().Accept();

        }
        catch (Exception ex)
        {
            ///Log your errors however you must.
        }
    }

我知道这不是花哨或任何事情,但它完成了工作。基本上它会尝试切换到警报,如果它在那里它返回true,如果它不是它返回false。如果为true,则再次切换并单击“接受”。非常简单。我还没有失败。

答案 1 :(得分:0)

您应该能够使用以下功能添加功能:

var options = new ChromeOptions();
options.AddAdditionalCapability(CapabilityType.UnexpectedAlertBehavior, "accept");

您还可以忽略警报:

var options = new ChromeOptions();

options.AddAdditionalCapability(CapabilityType.UnexpectedAlertBehavior, "ignore");