在尝试检查是否存在警报时,我调用了一个名为AlertIsDisplayed
的扩展方法,在IWebDriver
上,该方法如下:
try
{
Driver.Instance.SwitchTo().Alert();
return true;
}
catch (NoAlertPresentException)
{
return false;
}
finally
{
Driver.Instance.SwitchTo().DefaultContent();
}
然而,由于我要捕获一个异常,这导致返回结果的时间相当昂贵,需要2-3秒钟。由于在数百个测试中都使用了这种方法,所以额外的执行时间累加起来会达到几分钟。
为了加速处理,我尝试将同样的方法更改为以下内容:
return ExpectedConditions.AlertIsPresent()(driver) != null;
在此,driver
是调用扩展方法的IWebDriver
。
然而,这需要同样的时间。查看源代码ExpectedConditions.AlertIsPresent
可以发现原因 - 这正是我以前做的事情,但只是将其封装在一个包装器中。
我已将ImplicitWait
设置为0。
这是在Selenium 2.53.1上运行的。我的驱动程序是一个EventFiringWebDriver
,其中WrappedDriver
为FirefoxDriver
。运行此程序的Firefox版本为47.0.1。
有没有检查是否存在警报的替代方法,需要更少的时间?