selenium自动化测试入门 Alert/Confirm/Prompt 弹出窗口处理
一、Alert/Confirm/Prompt弹出窗口特征说明
Alert弹出窗口:
提示用户信息只有确认按钮,无法通过页面元素定位,不关闭窗口无法在页面上做其他操作。

Confirm 弹出窗口:
有确认和取消按钮,该弹出窗口无法用页面元素定位,不关闭窗口无法在页面上做其他操作。

Prompt弹出窗口:
有输入框、确认和取消按钮,该弹出窗口无法用页面元素定位,不关闭窗口无法在页面上做其他操作。

注意:3种窗口为浏览器自带的窗口,该窗口无法定位到元素,能定位到元素需要使用WebElement操作。
二、Alert/Confirm/Prompt弹出窗口操作
第一步:需要获取弹出窗口,两种方法 与Alert(driver)
alert=driver.switch_to.alert
或
from selenium.webdriver.common.alert import Alert
alert=Alert(driver)
第二步:对获取到的窗口进行操作,常用方法如下:
alert.text() # 获取窗口信息
alert.accept() # 确认
alert.dismiss() # 取消
alert.send_keys(keysToSend) # 输入信息
alert.authenticate(username, password) # 用户认证信息登录,已有确认操作
三、实例说明
创建下面3个html文件
alertTest.html
<html>
<head>
<title>Alert Test</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
</head>
<script type="text/javascript">
function showAlert(){
alert(document.from1.t1.value);
}
function showMultilineAlert(){
alert("你必须纠正以下错误:\n你必须输入XXXX.\n你必须做XXXX.\n你必须XXXX");
}
</script>
<body>
<h2>Alert Test</h2>
<form name="from1">
<input type="text" name="t1" value="可以输入 Alert 信息"><br><br>
<input type="button" name="button1" value="点击Alert获取输入框信息" onclick="showAlert()"><br><br>
<input type="button" name="button2" value="Alert自带多行文本信息" onclick="showMultilineAlert()"><br>
</form>
</body>
</html>
confirmTest.html
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<title>Confirm Test</title>
</head>
<script type="text/javascript">
function showConfirm(){
var t1 = document.from1.t1;
if (confirm("请点击确认或取消")){
t1.value = "确认";
}else{
t1.value = "取消";
}
}
</script>
<body>
<h2>Confirm Test</h2>
<form name="from1">
<input type="button" name="button1" value="点击Confirm按钮" onclick="showConfirm()"><br><br>
<input type="text" name="t1">
</form>
</body>
</html>
promptTest.html
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<title>Prompt Test</title>
</head>
<script type="text/javascript">
function showPrompt(){
var t1 = document.from1.t1;
t1.value = prompt("请输入信息,信息将填入页面输入框.");
}
</script>
<body>
<h2>Prompt Test</h2>
<form name="from1">
<input type="button" name="button1" value="点击Prompt按钮" onclick="showPrompt()"><br><br>
<input type="text" name="t1">
</form>
</body>
</html>
示例1:Alert弹窗获取文本与确认操作
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support.expected_conditions import alert_is_present
from selenium.webdriver.common.alert import Alert
driver = webdriver.Chrome()
driver.get(r'E:\XXX\alertTest.html')
driver.find_element_by_name('button1').click() # 点击第一个按钮
WebDriverWait(driver, 5).until(alert_is_present()) # 等待弹出窗口出现
alert = driver.switch_to.alert # 获取弹出窗口
text1 = alert.text # 获取窗口文本信息
print(text1) # 打印窗口文本信息
alert.accept() # 确认
print('----------')
driver.find_element_by_name('button2').click() # 点击第二个按钮
WebDriverWait(driver, 5).until(alert_is_present()) # 等待弹出窗口出现
alert = Alert(driver) # 获取弹出窗口
text1 = alert.text # 获取窗口文本信息
print(text1) # 打印窗口文本信息
alert.accept() # 确认
driver.quit()
注意:WebDriverWait(driver, 5).until(alert_is_present()) 加上这个可提高代码的可靠性
示例2:Comfirm弹窗获取文本、确认、取消操作
driver = webdriver.Chrome()
driver.get(r'E:\XXX\confirmTest.html')
driver.find_element_by_name('button1').click() # 点击按钮
WebDriverWait(driver, 5).until(alert_is_present()) # 等待弹出窗口出现
alert = driver.switch_to.alert # 获取弹出窗口
print(alert.text) # 打印窗口信息
alert.accept() # 确认
time.sleep(2)
driver.find_element_by_name('button1').click() # 点击按钮
WebDriverWait(driver, 5).until(alert_is_present()) # 等待弹出窗口出现
alert = driver.switch_to.alert # 获取弹出窗口
alert.dismiss() # 取消
time.sleep(2)
driver.quit()
示例3:Prompt 弹窗获取文本、输入内容、确认操作
driver = webdriver.Chrome()
driver.get(r'E:\XXX\promptTest.html')
driver.find_element_by_name('button1').click() # 点击按钮
WebDriverWait(driver, 5).until(alert_is_present()) # 等待弹出窗口出现
alert = Alert(driver) # Alert 获取弹出窗口
alert.send_keys('selenium Alert弹出窗口输入信息') # 输入信息
alert.accept() # 确认
time.sleep(2)
driver.quit()
selenium自动化测试入门 Alert/Confirm/Prompt 弹出窗口处理的更多相关文章
- 基于js alert confirm样式弹出框
基于js alert confirm样式弹出框.这是一款根据alert confirm优化样式的确认对话框代码. 在线预览 源码下载 实现的代码. html代码: <div id=" ...
- javascript alert,confirm,prompt弹框用法
1. alert是弹出警告框,在文本里面加入\n就可以换行. 2. confirm弹出确认框,会返回布尔值,通过这个值可以判断点击时确认还是取消.true表示点击了确认,false表示点击了取消. 3 ...
- 2.11 alert\confirm\prompt
2.11 alert\confirm\prompt 前言 不是所有的弹出框都叫alert,在使用alert方法前,先要识别出到底是不是alert.先认清楚alert长什么样子,下次碰到了,就可以用 ...
- Selenium2学习(十二)-- alert\confirm\prompt
前言 不是所有的弹出框都叫alert,在使用alert方法前,先要识别出到底是不是alert.先认清楚alert长什么样子,下次碰到了,就可以用对应方法解决. alert\confirm\prompt ...
- selenium python (十一)alert/confirm/prompt的处理(js中的弹出框)
webdriver中处理js所生成的alert.confirm以及prompt,采用switch_to_alert()方法定位到alert/confirm/prompt.然后使用text/accept ...
- 基于Selenium2+Java的UI自动化(6)-操作Alert、confirm、prompt弹出框
alert.confirm.prompt这样的js对话框在selenium1 时代处理起来比价麻烦,常常要用autoit来帮助处理.而现在webdriver对这些弹出框做了专门的处理,使用seleni ...
- Java Selenium - 几种对话框处理Alert\confirm\prompt
1. Alert , 先用常规办法定位到能触发alert的按钮 , 然后 Alert alert = driver.switchTo().alert(); alert.accept(); 如果aler ...
- Python+Selenium学习--alert/confirm/prompt 处理
场景 webdriver 中处理JavaScript 所生成的alert.confirm 以及prompt 是很简单的.具体思路是使用switch_to.alert()方法定位到alert/confi ...
- alert/confirm/prompt 处理
webdriver 中处理JavaScript 所生成的alert.confirm 以及prompt 是很简单的.具体思路是使用switch_to_alert()方法定位到alert/confirm/ ...
随机推荐
- 2019-1-29-Moq基础-判断方法被执行
title author date CreateTime categories Moq基础 判断方法被执行 lindexi 2019-01-29 16:29:57 +0800 2019-01-17 1 ...
- Hbase数据模型概念视图
- H3C TCP连接的建立
- 【BestCoder Round #93 1002】MG loves apple
[题目链接]:http://acm.hdu.edu.cn/showproblem.php?pid=6020 [题意] 给你一个长度为n的数字,然后让你删掉k个数字,问你有没有删数方案使得剩下的N-K个 ...
- 从浏览器的url中获取查询字符串的参数
正则表达式: function getQuery(name){ var reg = new RegExp("(^|&)" + name + "=([^&] ...
- php中 instanceof有什么作用
php中 instanceof有什么作用 作用:(1)判断一个对象是否是某个类的实例,(2)判断一个对象是否实现了某个接口.
- 嵌套app ,的h5分支 项目 (分享,保存图片,返回app)
function callAppBridge(func, argObj) { const app = window.webkit || window.app; const args = typ ...
- Python--day71--Cookie和Session
一.Cookie Cookie图示: 二.Session 引用:http://www.cnblogs.com/liwenzhou/p/8343243.html cookie Cookie的由来 大家都 ...
- html中让多个li标签横排显示
1.我们可以通过为ul标签下所有li标签设定样式“display:inline-block”的方式,让多个li标签横排显示 2.除了以上方法,我们还可以所有li标签使用float(浮动)的方式,让多个 ...
- 在vuex的mutations中使用vue的小技巧
问题: 在vuex组件中的mutations属性中的定义的函数,有时会要用到vue这个对象.正常在其他的地方使用是通过this这个变量来获取,但是在mutations定义的函数中this指定的是Vue ...