试图处理警报时,Selenium Webdriver挂起

时间:2015-06-02 17:40:38

标签: java selenium-webdriver selenium-firefoxdriver

我正在使用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调用之前。我不知道这些信息是否相关,但我认为更多的信息比没有足够的信息更好。

1 个答案:

答案 0 :(得分:0)

Firefox 30版是selenium webdriver的最佳版本。将firefox降级到30 u将解决问题