【问题标题】:Selenium Webdriver Hangs when Trying to Handle an AlertSelenium Webdriver 在尝试处理警报时挂起
【发布时间】: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


【解决方案1】:

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

【讨论】:

  • 我试过了,但也没有用。与 Firefox 34 和 38 中的行为相同,在弹出警报时它会永远挂起
  • @KarlFokum 确保您已经更改了 firefox 设置以使其不升级。转到firefox中的高级设置并检查从不检查更新
  • 我有。我只在更改我的 Selenium 版本时升级(或者在这种情况下,当出现新问题并且我需要检查它是否与当前浏览器版本相关并且已在更新的版本中修复)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-01-04
  • 1970-01-01
  • 1970-01-01
  • 2023-01-02
  • 2021-09-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多