我想在C#中使用chrome驱动程序实例实现DesiredCapabilities,但我发现它不可能吗?例如......
DesiredCapabilities capabilities = DesiredCapabilities.Chrome();
capabilities.SetCapability(CapabilityType.UnexpectedAlertBehavior, "accept");
Driver = new ChromeDriver(@"C:\Development\Projects\SeleniumObservatoryTests\", capabilities);
ChromeDriver似乎需要选项。有没有办法提供UnexpectedAlertBehavior作为选项?
答案 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");