我正在使用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()的警报。接受”在机器人代码之后,只是延迟了异常生成。
如果有人有解决方案,请帮忙。如果有什么不清楚,或者你对这种情况有更多疑问,我很乐意回答。我已经花了6个小时了。
额外信息: 默认警报管理工作是在一天前工作的,就在公司的UI团队决定异步进行Ajax调用之前。我不知道这些信息是否相关,但我认为更多的信息比没有足够的信息更好。
答案 0 :(得分:0)
Firefox 30版是selenium webdriver的最佳版本。将firefox降级到30 u将解决问题