模态对话框出现异常。

4
我尝试通过以下方式单击 a 元素:
WebElement title = driver.findElement(By.xpath("//a[text()=\"Delete this document library\"]"));
title.click();

当我手动点击它时,会弹出一个窗口:
 http://.. 上的页面显示
您确定要删除所选项目吗?

OKCancel 按钮。

但是当我在 WebDriver (在 Firefox 20.0 中)中运行它时,我遇到以下错误:

[异常]: 模态对话框存在

并且我甚至看不到窗口。

可能的原因是什么?

4个回答

4

当你运行测试时,看不到警告是因为WebDriver的默认行为是在抛出模态对话框异常接受警告。 它发生得太快了,以至于你看不到警告。

  WebElement title = driver.findElement(By.xpath("//a[text()=\"Delete this document library\"]"));
title.click();

//Now the alert appears. 
Alert alert = driver.switchTo().alert();
alert.accept();

谢谢,这就是Mark Rowlands在他的链接中建议的。它什么也没做(我需要按下此警报中的OK)。我该如何更改Firefox,使其不接受警报并显示它? - user2490373
在答案中编写代码,它会在警报出现后切换到警报并单击警报上的确定按钮。您将不再看到模态对话框存在异常。 - Code Enthusiastic

3
如果每次都没有弹出警告窗口,您可以这样做:
try { 
    Alert alert = driver.switchTo().alert();
    alert.accept();
    //if alert present, accept and move on.
}
catch (NoAlertPresentException e) {
    //do what you normally would if you didn't have the alert.
}

1

它完全没有打开吗? - Mark Rowlands

0

alert.dismiss() 或者按下 Esc 按钮可以关闭警告框。对于我的情况,这解决了这个问题。


请问您能否具体说明一下? - Alexander
driver.findElement(By.xpath("...")); Alert alert = driver.switchTo().alert(); alert.dismiss(); 或者 Robot r = new Robot(); r.keyPress(KeyEvent.VK_ESCAPE); r.keyRelease(KeyEvent.VK_ESCAPE); - Kuladip
1
请不要 在评论中回答,请更新您的帖子。查看 https://stackoverflow.com/help/how-to-answer 了解如何编写“优秀”的答案。 - Alexander

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接