alert、confirm、prompt这样的js对话框在selenium1.X时代也是难啃的骨头,常常要用autoit来帮助处理。
试用了一下selenium webdriver中处理这些对话框十分方便简洁。以下面html代码为例:
Dialogs.html
<html>
<head>
<title>Alert</title>
</head>
<body>
<input id = "alert" value = "alert" type = "button" onclick = "alert('欢迎!请按确认继续!');"/>
<input id = "confirm" value = "confirm" type = "button" onclick = "confirm('确定吗?');"/>
<input id = "prompt" value = "prompt" type = "button" onclick = "var name = prompt('请输入你的名字:','请输入
你的名字'); document.write(name) "/>
</body>
</html>
以上html代码在页面上显示了三个按钮,点击他们分别弹出alert、confirm、prompt对话框。如果在prompt对话框中输入文字点击确定之后,将会刷新页面,显示出这些文字 。
selenium webdriver 处理这些弹层的代码如下:
import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
public class DialogsStudy {
/**
* @author gongjf
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.setProperty("webdriver.firefox.bin","D:\\Program Files\\Mozilla Firefox\\firefox.exe");
WebDriver dr = new FirefoxDriver();
String url = "file:///C:/Documents and Settings/gongjf/桌面/selenium_test/Dialogs.html";// "/Your/Path/to/main.html"
dr.get(url);
//点击第一个按钮,输出对话框上面的文字,然后叉掉
dr.findElement(By.id("alert")).click();
Alert alert = dr.switchTo().alert();
String text = alert.getText();
System.out.println(text);
alert.dismiss();
//点击第二个按钮,输出对话框上面的文字,然后点击确认
dr.findElement(By.id("confirm")).click();
Alert confirm = dr.switchTo().alert();
String text1 = confirm.getText();
System.out.println(text1);
confirm.accept();
//点击第三个按钮,输入你的名字,然后点击确认,最后
dr.findElement(By.id("prompt")).click();
Alert prompt = dr.switchTo().alert();
String text2 = prompt.getText();
System.out.println(text2);
prompt.sendKeys("jarvi");
prompt.accept();
}
}
从以上代码可以看出dr.switchTo().alert();这句可以得到alert\confirm\prompt对话框的对象,然后运用其方法对它进行操作。对话框操作的主要方法有:
- getText() 得到它的文本值
- accept() 相当于点击它的"确认"
- dismiss() 相当于点击"取消"或者叉掉对话框
- sendKeys() 输入值,这个alert\confirm没有对话框就不能用了,不然会报错。
分享到:
相关推荐
1.7 selenium webdriver学习(七)------------如何处理alert、confirm、prompt对话框 . . . . . . . . .24 1.8 selenium webdriver学习(八)------------如何操作select下拉框 . . . . . . . . . . . . . . . . . ...
第六章讲解如何捕获和处理浏览器中的弹出窗口,包括`alert`、`confirm`和`prompt`对话框。 **捕获弹出窗口的方法**: - 捕获并响应`alert`对话框。 - 捕获并确认/取消`confirm`对话框。 - 填写并提交`prompt`对话框...
对话框处理也是自动化测试中经常遇到的场景,本书提供了如何处理alert、confirm以及prompt等原生JS弹出框的方法。 在表单元素处理方面,本书提供了丰富的知识,包括如何使用selenium执行JavaScript,以及如何获取...
### Selenium WebDriver 学习知识点概览 #### 1. Selenium WebDriver 概述 - **定义**: Selenium WebDriver 是一种用于自动化 Web 测试的工具,能够直接与浏览器交互,并且支持多种编程语言,例如 Java、Python、C#...
方法定位到 alert/confifirm/prompt对话框。 2,操作 1,页面弹框 页面弹框是属于HTML里面的元素,它是由用户在操作页面的时候在本页面弹出的。所以科研直接在页面上定位到 步骤: 1,用户操作后,弹出页面弹框 2,...
Selenium可以处理弹出框(alert)、确认框(confirm)和提示框(prompt)。通过`switch_to_alert()`方法可以切换到弹出框,然后执行相应的操作,如接受、拒绝或输入文本。 ### 8. 并行测试与多浏览器支持 Selenium...
Selenium IDE 录制的 `alert` 命令在 JUnit 中同样不适用,但 WebDriver 提供了相应的 API 来处理 alert 对话框: 1. **检查并获取 alert 文本**: ```java Alert alert = driver.switchTo().alert(); String ...
- **处理对话框alert\confirm\prompt**:通过`driver.switchTo().alert()`来操作。 - **表格的处理**:遍历表格中的所有单元格,并提取所需的数据。 - **富文本编辑器**:可以通过特殊的JavaScript调用来操作富文本...
#### 处理Alert/Confirm/Prompt **知识点:** - **处理Alert:** Alert是弹出的警告框,WebDriver提供了`switch_to.alert`来处理。 - **示例代码:** ```python alert = driver.switch_to.alert alert.accept()...
本文将深入探讨如何使用 Selenium 应对三种类型的弹窗:alert(警告信息)、confirm(确认信息)和 prompt(提示输入)。这些弹窗通常在用户执行特定操作时出现,例如点击某个按钮或链接。 1. Alert 弹窗(警告信息...
- **处理Alert/Confirm/Prompt**: - 通过SwitchTo接口处理警告框。 ```java Alert alert = dr.switchTo().alert(); alert.accept(); // 确认 alert.dismiss(); // 取消 ``` - **处理Frame**: - 切换到frame...
例如,在测试时,我们可以点击触发警告框的按钮,然后使用Selenium的`switchTo().alert()`方法来处理弹出的警告框,获取其文本并接受(`accept()`)或忽略(`dismiss()`)。 2. **提示框(Prompt)**:提示框用于向...
当点击按钮时,JavaScript函数会调用`window.alert()`, `window.confirm()`, 或者 `window.prompt()`,然后Selenium可以通过`switch_to.alert`来处理这些对话框。 总结,处理Python Selenium中的弹出框,我们需要...
4. **处理弹出框**:对于alert、confirm、prompt等对话框,可以使用`switch_to.alert`进行相应操作,如接受、取消或输入文本。 5. **截图功能**:当遇到错误或需要记录测试过程时,可以使用`driver.get_screenshot_...
处理弹窗(alert/confirm/prompt)和等待(wait)功能确保了在特定条件满足时执行后续操作,避免因页面加载延迟导致的测试失败。定位frame中的元素是处理内嵌框架时的必要步骤,而actions类则支持复杂的用户交互,如...
除了基本的处理弹出窗口之外,还可以使用类似的方法来处理其他类型的弹出元素,如模态对话框(alert、confirm、prompt)。对于这些对话框,Selenium 提供了`Alert`对象进行交互,如`accept()`接受提示,`dismiss()`...