我使用过去的selenium一些网站随机弹出的消息会停止正常的测试过程
我想的是我需要将IAlert作为Observer模式捕获警报接受它,并从其停止处理弹出窗口的点开始继续测试。
IAlert代码:
try
{
IAlert alert = driver.SwitchTo().Alert();
if (alert != null)
{
alert.Accept();
}
}
catch (Exception ex)
{}
主要问题是我如何执行它或者是否有更好的方法来处理随机弹出窗口?
感谢' S
答案 0 :(得分:3)
由于弹出窗口在您尝试执行其他操作时很重要,我将建议采用以下方法:EventFiringWebDriver允许您定义将在特定事件之前或之后运行的自定义代码。查看示例here。
不幸的是,我在.Net上写了很长时间,所以我的C#技能很生疏。所以粗略看起来像这样:
IWebDriver driver = new FirefoxDriver();
EventFiringWebDriver eventDriver = new EventFiringWebDriver(driver);
// add all relevant events, for example before clicking on something:
eventDriver.ElementClicking = new EventHandler<FindElementEventArgs>(checkPopup);
driver = eventDriver; // only need EventFiringWebDriver
然后
static void checkPopup(object sender, OpenQA.Selenium.Support.Events. WebElementEventArgs e) {
EventFiringWebDriver driver = (sender as OpenQA.Selenium.Support.Events.EventFiringWebDriver);
try {
Alert alert = driver.SwitchTo().Alert();
alert.accept();
}
catch (NoAlertPresentException ex) {
// nothing to do - just continue
}
}
现在,每次脚本即将点击某些内容时,它会首先检查弹出窗口并在需要时接受它。