处理使用selenium webdriver弹出许多按钮

时间:2012-07-05 17:09:44

标签: java selenium popup selenium-webdriver

我正在使用带有Java语言的selenium web驱动程序。当弹出窗口中有两个按钮,即确定和取消时,使用以下代码可以使用Web驱动程序轻松处理:

Alert alert = driver.switchTo().alert();
alert.accept(); // or alert.dismiss(); depending upon the action u want to perform.

但是当有两个以上的按钮时该怎么办,即弹出窗口中有3到4个按钮(例如ok,取消,再试一次,忽略/继续),在这种情况下我们该怎么办?我们如何点击我们想要的任何按钮?

非常感谢您的帮助

2 个答案:

答案 0 :(得分:2)

我们所谈论的是JavaScript的对话框弹出窗口。有alert(有一个OK按钮),confirm(有确定/取消)和prompt(有一个输入字段和OK)。而已。因此,您看到的对话框不是JavaScript对话框,Selenium的Alert界面无法处理。

你可能正在处理这两个中的一个:

  1. 自定义对话框,如jQuery的dialog()(或类似的东西)。那是好消息!这不是真正的弹出窗口,这只是一个精心设计的叠加层,由普通的HTML组成,看起来像一个对话框。您应该能够通过WebDriver的常用方式与其进行交互:使用您选择的工具检查元素,然后找到并单击需要单击的按钮。
  2. 本机浏览器甚至操作系统的对话框(例如,下载对话框)。这是个坏消息,因为WebDriver无法处理这些。此外,它们在浏览器/系统/语言设置方面往往看起来不同,因此您需要检测并处理每个案例。您的选择包括:
    • Robot类,它允许您以编程方式“按下”键盘上的任何内容(或盲目地点击),因此通过按 Enter
    • AutoIt。它是一个Windows程序,可用于处理任何系统级自动化。
    • 这或多或少。您可以指定您特别处理的对话框,我们可能会提出更好的解决方法。例如,可以完全避免下载对话框等。

答案 1 :(得分:0)

您只想在处理本机浏览器弹出对话框时使用alert()。如果Web应用程序您的测试弹出一个HTML对话框,那么您可以使用元素ID,xpath,CSS选择器等选择并单击任何按钮。