动态警报生成Selenium Webdriver C#

动态警报生成Selenium Webdriver C#,c#,selenium,C#,Selenium,我正在使用以下代码处理警报: ts.getDriver().SwitchTo().Alert().Accept(); 这很好,但我偶尔会遇到警报不总是弹出的情况。有人能提供解决方案吗?我似乎找不到正确的语法来处理C#中的条件 谢谢,您必须使用try-catch来处理此问题。即使是最新版本也是这样实现的 try { ts.getDriver().SwitchTo().Alert().Accept(); } catch (NoAlertPresentException) { //

我正在使用以下代码处理警报:

ts.getDriver().SwitchTo().Alert().Accept();
这很好,但我偶尔会遇到警报不总是弹出的情况。有人能提供解决方案吗?我似乎找不到正确的语法来处理C#中的条件


谢谢,

您必须使用try-catch来处理此问题。即使是最新版本也是这样实现的

try
{
    ts.getDriver().SwitchTo().Alert().Accept();
}
catch (NoAlertPresentException)
{
    // do nothing...
}
如果要隐藏这种丑陋,可以将其包装在扩展方法中:

public static class SwitchExtensions
{
    public static IAlert AlertOrNull(this ITargetLocator locator)
    {
        try
        {
            return locator.Alert();
        }
        catch (NoAlertPresentException)
        {
            return null;
        }
    }
}
用法:

var alert = driver.SwitchTo().AlertOrNull();
if (alert != null)
    alert.Accept();

它是否抛出
NullReferenceException
?NoAlertPresentException:没有警报处于活动状态我正在调用一个方法来处理在测试期间弹出的警报,但不是每个场景都会触发警报弹出,因此我试图找出语法,以便在警报正在被触发