我正在使用最后的硒,一些网站会随机弹出消息,停止正常的测试过程
我的想法是,我需要将 IAlert 作为观察者模式来捕获警报,接受警报并从其停止处理弹出窗口的点继续测试。
警报代码:
try
{
IAlert alert = driver.SwitchTo().Alert();
if (alert != null)
{
alert.Accept();
}
}
catch (Exception ex)
{}
主要问题是我该如何执行它,或者是否有更好的方法来处理随机弹出窗口?
Thank's
由于当您尝试做其他事情时弹出窗口很重要,因此我建议采用以下方法:事件触发WebDriver https://github.com/SeleniumHQ/selenium/blob/fa067c7b80f2e07270b7e36d2a01938aa3f33973/dotnet/src/support/Events/EventFiringWebDriver.cs允许您定义将在特定事件之前或之后运行的自定义代码。看一个例子here https://github.com/SeleniumHQ/selenium/blob/fa067c7b80f2e07270b7e36d2a01938aa3f33973/dotnet/test/support/Events/EventFiringWebDriverTest.cs#L31.
不幸的是我已经很长时间没有在.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
}
}
所以现在,每次脚本要单击某些内容时,它都会首先检查弹出窗口并在需要时接受它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)