如何使用带有 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的解决办法
测试工具Selenium webdriver的各种driver