如何使用带有 IEDriver 的 webdriver 处理 javascript 警报

Posted

技术标签:

【中文标题】如何使用带有 IEDriver 的 webdriver 处理 javascript 警报【英文标题】:How to handle the javascript alert using webdriver with IEDriver 【发布时间】:2013-09-26 05:59:45 【问题描述】:

使用 selenium IEwebdriver,webdriver Alert 类方法不起作用......这个问题似乎是 IE 浏览器特有的,而在 chrome、ff 等中它运行良好。

我们可以使用任何解决方法来使用 IEWebdriver 处理 js 警报 ..?

我也尝试了 javascriptexecutor 方法,如下所示

((JavascriptExecutor)driver).executeScript("window.alert = function(msg)return true;;");  
((JavascriptExecutor)driver).executeScript("window.prompt = function(msg)  return true; ");        
((JavascriptExecutor)driver).executeScript("window.confirm = function(msg)  return true; ");

但没有运气:(

非常感谢任何帮助

【问题讨论】:

“不工作”是什么意思? Alert 方法没有被全局破坏; WebDriver 项目在五个不同版本的 IE 上对每次提交运行测试,这些测试都通过了,并且都包括警报测试。 嗨,吉姆,我有这段很受欢迎的代码 Alert alt = driver.switchTo().alert(); alt.accept();这看起来无法对我的应用程序中出现的 JS 警报执行预期的操作......而且我只有在使用 iewebdriver 在 IE9 上工作时才会看到这个问题......但在 chrome 中看起来一切都很好......这就是问题我面对... 【参考方案1】:

在java中我们这样做:

WebDriverWait wait = new WebDriverWait(driver, TIMEOUT);
wait.until(ExpectedConditions.alertIsPresent());

以上代码将隐式等待警报。如果不存在警报,它将抛出 TimeoutException。

driver.switchTo().alert().accept();

上面的代码切换到警报弹出窗口并单击确定。如果警报不存在,则会抛出 NoAlertPresentException。

希望对你有帮助。

【讨论】:

以上是关于如何使用带有 IEDriver 的 webdriver 处理 javascript 警报的主要内容,如果未能解决你的问题,请参考以下文章

ieDriver启动IE浏览器显示This is the initial start page for the WebDriver server的解决办法

python 自动化打开了非预期的浏览器解决实例

Selenium WebDriver使用IE浏览器

测试工具Selenium webdriver的各种driver

如何使用 jQuery 在 Selenium WebDriver 中单击带有 Java 的按钮

selenium2调用iedriver打开ie为啥点页面超链接没有反应呢