0

为什么不能(使用InternetExplorerDriver)接受由显式执行 JavaScript 触发的警报?

driver.ExecuteJavaScript("myfuncTriggeringAnAlert()");

var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(5));
var alert = wait.Until(ExpectedConditions.AlertIsPresent());
alert.Accept();

该代码在使用 时效果很好ChromeDriver,但是不幸的是,InternetExplorerDriver甚至没有从ExecuteJavaScript()调用中返回。它只是在 60 秒后超时。

有任何想法吗?这是众所周知的行为吗?

IE11 + IE驱动2.48.0

4

1 回答 1

0

我认为问题在于window.alertJavaScript的功能。它在 Internet Explorer 中的行为方式与在其他浏览器中的行为方式不同。Selenium WebDriver 无法正确处理它,据我所知,您唯一能做的就是在 IE 中手动关闭它。

因此,我会更改您的功能myfuncTriggeringAnAlert以避免使用本机警报。也许您可以使用自定义警报对话框,例如此处

于 2016-11-30T12:22:33.423 回答