一、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 弹出窗口处理的更多相关文章

  1. 基于js alert confirm样式弹出框

    基于js alert confirm样式弹出框.这是一款根据alert confirm优化样式的确认对话框代码. 在线预览   源码下载 实现的代码. html代码: <div id=" ...

  2. javascript alert,confirm,prompt弹框用法

    1. alert是弹出警告框,在文本里面加入\n就可以换行. 2. confirm弹出确认框,会返回布尔值,通过这个值可以判断点击时确认还是取消.true表示点击了确认,false表示点击了取消. 3 ...

  3. 2.11 alert\confirm\prompt

    2.11 alert\confirm\prompt 前言   不是所有的弹出框都叫alert,在使用alert方法前,先要识别出到底是不是alert.先认清楚alert长什么样子,下次碰到了,就可以用 ...

  4. Selenium2学习(十二)-- alert\confirm\prompt

    前言 不是所有的弹出框都叫alert,在使用alert方法前,先要识别出到底是不是alert.先认清楚alert长什么样子,下次碰到了,就可以用对应方法解决. alert\confirm\prompt ...

  5. selenium python (十一)alert/confirm/prompt的处理(js中的弹出框)

    webdriver中处理js所生成的alert.confirm以及prompt,采用switch_to_alert()方法定位到alert/confirm/prompt.然后使用text/accept ...

  6. 基于Selenium2+Java的UI自动化(6)-操作Alert、confirm、prompt弹出框

    alert.confirm.prompt这样的js对话框在selenium1 时代处理起来比价麻烦,常常要用autoit来帮助处理.而现在webdriver对这些弹出框做了专门的处理,使用seleni ...

  7. Java Selenium - 几种对话框处理Alert\confirm\prompt

    1. Alert , 先用常规办法定位到能触发alert的按钮 , 然后 Alert alert = driver.switchTo().alert(); alert.accept(); 如果aler ...

  8. Python+Selenium学习--alert/confirm/prompt 处理

    场景 webdriver 中处理JavaScript 所生成的alert.confirm 以及prompt 是很简单的.具体思路是使用switch_to.alert()方法定位到alert/confi ...

  9. alert/confirm/prompt 处理

    webdriver 中处理JavaScript 所生成的alert.confirm 以及prompt 是很简单的.具体思路是使用switch_to_alert()方法定位到alert/confirm/ ...

随机推荐

  1. oralce函数 next_day(d1[,c1])

    [功能]:返回日期d1在下周,星期几(参数c1)的日期 [参数]:d1日期型,c1为字符型(参数),c1默认为j(即当前日期) [参数表]:c1对应:星期一,星期二,星期三……星期日 [返回]:日期 ...

  2. 谈谈数据库的 ACID(转)

    一.事务 定义:所谓事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位. 准备工作:为了说明事务的ACID原理,我们使用银行账户及资金管理的案例进行分析. 二.ACI ...

  3. java Jre和Jdk的区别?

    JRE:(Java Runtime Environment),java运行环境.包括Java虚拟机(JVM Java Virtual Machine)和Java程序所需的核心类库等,如果想要运行一个开 ...

  4. HDU 2717 宽搜第一题、

    题意:求n到k的最小路径,  n有三种变法 n+1,n-1或者2*n: 贴个广搜的模版在这里把.... 总结一下:一般涉及到求最短路的话用宽搜 #include<iostream> #in ...

  5. poj2632 累死了

    题意: 给定A*B的格子,放入N个机器人,每个机器人初始位置及朝向给定.给定M条指令.指令类型有三种: 1.L:左转90°      2.R:右转90°       3.F:前进一格 问执行指令过程中 ...

  6. Javassist指引(二)--ClassPool

    原文链接 上一章: Javassist指引(一) 2.ClassPool ClassPool是一个CtClass的容器.因为编译器随时可能访问一个CtClass类,所以一旦一个CtClass创建,它将 ...

  7. 2019-10-31-Resharper-去掉注释拼写

    title author date CreateTime categories Resharper 去掉注释拼写 lindexi 2019-10-31 9:8:5 +0800 2018-09-04 1 ...

  8. 4-3 xpath的用法

  9. Django入门7--博客撰写页面开发

  10. C# 使用反射获取私有属性的方法

    本文告诉大家多个不同的方法使用反射获得私有属性,最后通过测试性能发现所有的方法的性能都差不多 在开始之前先添加一个测试的类 public class Foo { private string F { ...