【发布时间】:2015-06-02 17:40:37
【问题描述】:
我正在使用 Selenium webdriver java 2.45 和 firefox 38,在尝试处理警报时,它会永远挂起。我已经四处寻找任何先前的答案,我只能找到 this。他没有得到任何答案,我无法评论以重申这个问题,所以如果有人遇到这个问题,我们将不胜感激。
很遗憾,我无法附上代码示例或任何机密信息,但情况如下: 我填写了一个在提交时生成警报的表单,我使用以下代码尝试接受警报:
try {
(new WebDriverWait(driver_, timeout)).until(ExpectedConditions.alertIsPresent());
} catch (TimeoutException e) {
throw new NoAlertPresentException();
} catch (Exception e1) {
throw e1;
}
Alert alert = driver_.switchTo().alert();
String alertText = alert.getText();
if (dismiss)
alert.dismiss();
else
alert.accept();
与引用的问题一样,这会永远挂起,因此我使用 Java Robot 类来解除警报,如下所示:
try {
Robot rb;
rb = new Robot();
rb.keyPress(KeyEvent.VK_ENTER);
Thread.sleep(2000);
rb.keyRelease(KeyEvent.VK_ENTER);
} catch (AWTException | InterruptedException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
不幸的是,我马上就收到了 UnhandledAlertException,所以我不知道该怎么办。在机器人代码之后尝试使用“driver_.switchTo().alert().accept”接受警报只会延迟异常生成。
如果有人有解决方案,请帮助。如果有任何不清楚的地方,或者您对这种情况有更多疑问,我很乐意回答。我已经做了 6 个小时了。
额外信息: 默认的警报管理在一天前开始工作,就在公司的 UI 团队决定对他们的 Ajax 调用进行异步调用之前。我不知道这些信息是否相关,但我认为更多信息总比没有足够信息好。
【问题讨论】:
-
你能在 chrome 上重现这个问题吗?
-
我还没有为 Chrome 实现我的 Selenium 测试。我会尝试切换到 chromedriver,如果这不会太耗时,我会尽快为您解答。
-
那里弹出什么样的警报?它是基于浏览器的警报还是基于操作系统?
-
@KarlFokum 然后降级 Firefox。
Selenium尚未正式支持 FF 38。最新的 ff 和 selenium 2.45 有很多未解决的问题 -
@Saifur 我刚刚发现切换到 Chrome 并且 Chrome 没有出现问题,这意味着它是 Firefox 特有的。至少看起来是这样。
标签: java selenium-webdriver selenium-firefoxdriver