python selenium-webdriver 处理JS弹出对话框(六)
在实际系统中,在完成某些操作时会弹出对话框来提示,主要分为"警告消息框","确认消息框","提示消息对话"三种类型的对话框。
1.警告消息框(alert)
警告消息框提供了一个"确定"按钮让用户关闭该消息框,并且该消息框是模式对话框,也就是说用户必须先关闭该消息框然后才能继续进行操作。
2.确认消息框(confirm)
确认消息框向用户提示一个"是与否"问题,用户可以根据选择"确定"按钮和"取消"按钮。
3.提示消息对话(prompt)
提示消息框提供了一个文本字段,用户可以在此字段输入一个答案来响应您的提示。该消息框有一个"确定"按钮和一个"取消"按钮。选择"确认"会响应对应的提示信息,选择"取消"会关闭对话框。
selenium 提供switch_to_alert()方法定位到 alert/confirm/prompt对话框。使用 text/accept/dismiss/send_keys 进行操作,这里注意的是send_keys只能对prompt进行操作。
- switch_to_alert() #定位弹出对话
- text() #获取对话框文本值
- accept() #相当于点击"确认"
- dismiss() #相当于点击"取消"
- send_keys() # 输入值,这个alert和confirm没有输入对话框,所以这里就不能用了,所以这里只能使用在prompt这里。
为了便于显示switch_to_alter()方法,下面我这边写了一个小小的页面,这里我把三种对话框全部包括下来,然后来进行模拟实际过程中遇到的对话框。
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title></title>
</head>
<body>
<div align="center">
<h4>hello girl</h4>
<input type="button" onclick="showPro()" value="输入框弹窗按钮"/>
<input type="button" onclick="showAlert2()" value="提示弹窗按钮"/>
<input type="button" onclick="showAlert()" value="确认弹窗按钮"/><br><br><br>
<span id="textSpan"></span> </div>
</body>
<script>
function showAlert(){
document.getElementById("textSpan").innerHTML="";
if(confirm("你是帅哥吗?")){
document.getElementById("textSpan").innerHTML="<font style='color: red;'>您为何如此自信?</font>";
}else{
document.getElementById("textSpan").innerHTML="<font style='color: red;'>您为何如此谦虚?</font>";
} }
function showPro(){
document.getElementById("textSpan").innerHTML="";
con = prompt("输入1为强哥聪明,输入2为左哥笨");
if(con==1){
document.getElementById("textSpan").innerHTML="<font style='color: green;'>强哥是真聪明啊</font>";
}else if(con==2){
document.getElementById("textSpan").innerHTML="<font style='color: green;'>左哥是真笨啊</font>";
}else{
document.getElementById("textSpan").innerHTML="<font style='color: red;'>您没有按要求输入,请重新输入</font>";
}
}
function showAlert2(){
document.getElementById("textSpan").innerHTML="";
alert("用我三世烟火,换你一世迷离");
}
</script>
</html>
下面的三个例子,主要来演示如何处理上面说的三种对话框。
1.处理alert对话框。
#-*-coding:utf-8 -*-
import time
from selenium import webdriver
driver = webdriver.Chrome()
driver.maximize_window()
driver.get('file:///C:/Users/hunk/Desktop/alter.html')
'''获取alert对话框的按钮,点击按钮,弹出alert对话框'''
driver.find_element_by_xpath('/html/body/div/input[2]').click()
'''获取alert对话框'''
alert = driver.switch_to_alert()
'''添加等待时间'''
time.sleep(2)
'''获取警告对话框的内容'''
print (alert.text) #打印警告对话框内容
alert.accept() #alert对话框属于警告对话框,我们这里只能接受弹窗
'''添加等待时间'''
time.sleep(2)
driver.quit()
2.处理confirm对话框
#-*-coding:utf-8 -*-
import time
from selenium import webdriver
driver = webdriver.Chrome()
driver.maximize_window()
driver.get('file:///C:/Users/hunk/Desktop/alter.html')
'''获取confirm对话框的按钮,点击按钮,弹出confirm对话框'''
driver.find_element_by_xpath('/html/body/div/input[3]').click()
'''获取confirm对话框'''
dialog_box = driver.switch_to_alert()
'''添加等待时间'''
time.sleep(2)
'''获取对话框的内容'''
print (dialog_box.text) #打印警告对话框内容
'''点击【确认】显示"您为何如此自信?"'''
dialog_box.accept() #接受弹窗
print (driver.find_element_by_xpath('//*[@id="textSpan"]/font').text)
time.sleep(2)
'''再次获取confirm对话框的按钮,点击按钮,弹出confirm对话框'''
driver.find_element_by_xpath('/html/body/div/input[3]').click()
'''再次获取confirm对话框'''
dialog_box = driver.switch_to_alert()
'''点击【取消】显示"您为何如此谦虚?"'''
time.sleep(2)
dialog_box.dismiss() #关闭获取取消对话框
print (driver.find_element_by_xpath('//*[@id="textSpan"]/font').text)
driver.quit()
3.处理prompt对话框
#-*-coding:utf-8 -*-
import time
from selenium import webdriver
driver = webdriver.Chrome()
driver.maximize_window()
'''获取对话框输入2,并且点击【确认】,文本框内提示<左哥是真笨啊>,点击【取消】文本框内提示<您没有按要求输入,请重新输入>'''
driver.get('file:///C:/Users/hunk/Desktop/alter.html')
'''获取prompt对话框的按钮,点击按钮,弹出confirm对话框'''
driver.find_element_by_xpath('/html/body/div/input[1]').click()
'''获取prompt对话框'''
dialog_box = driver.switch_to_alert()
'''添加等待时间'''
time.sleep(2)
'''获取对话框的内容'''
print (dialog_box.text) #打印警告对话框内容
dialog_box.send_keys("") #弹出框内输入2
dialog_box.accept() #接受
print (driver.find_element_by_xpath('//*[@id="textSpan"]/font').text) #获取关闭弹窗结果 #获取确认弹窗结果
'''这里等待几秒在测试取消'''
time.sleep(2)
#************************点击【取消】,并且获取显示结果**********************
driver.find_element_by_xpath('/html/body/div/input[1]').click()
'''获取prompt对话框'''
dialog_box = driver.switch_to_alert()
'''添加等待时间'''
time.sleep(2)
dialog_box.dismiss() #关闭对话框
print (driver.find_element_by_xpath('//*[@id="textSpan"]/font').text) #获取关闭弹窗结果
time.sleep(2)
driver.quit()
python selenium-webdriver 处理JS弹出对话框(六)的更多相关文章
- python+selenium之处理alert弹出对话框
注:本篇文章转载 http://www.cnblogs.com/mengyu/p/6952774.html 在完成某些操作时会弹出对话框来提示,主要分为"警告消息框"," ...
- js弹出对话框的方法总结
九种js弹出对话框的方法总结,需要的朋友可以参考一下 [1.最基本的js弹出对话框窗口代码] 这是最基本的js弹出对话框,其实代码就几句非常简单: <script LANGUAGE=" ...
- JS弹出对话框的三种方式
JS弹出对话框的三种方式 我们用到了alert()方法.prompt()方法.prompt()方法,都是在网页有一个弹出框,那么就让我们探究一下他们之间的区别: 一.第一种:alert()方法 < ...
- js 弹出对话框的方法总结
原文:http://www.cnblogs.com/xiaofengfeng/archive/2012/10/20/2732784.html <!DOCTYPE html PUBLIC &quo ...
- js弹出对话框的三种方式(转)
原文地址:https://www.jb51.net/article/81376.htm javascript的三种对话框是通过调用window对象的三个方法alert(),confirm()和prom ...
- jsp页面不乱码,外部引用的js弹出对话框乱码
今天在做一个课程设计的时候,写到一个界面注册,在用js判断数据的正确性时,碰到了一个js弹出框的乱码问题.在网上找寻了很久,也找了很多博客看,但是发现怎么样都不能解决我的问题,下面给出几个比较经典的解 ...
- [selenium webdriver Java]处理弹出窗口
Selenium WebDriver测试弹出窗口,包括识别弹出窗口,将driver转到新的窗口,在新的串钩中执行而是步骤,然后再转换到最初的窗口. 通过名称(name)识别和处理: Selenium ...
- selenium中Alter等弹出对话框的处理
昨天使用selenium做自动化测试,发现部分页面会弹出alert对话框,找了写资料,大概的意思就是要给弹出的对话框做出相应,不然,后续的处理会失败. _driver.SwitchTo().Alert ...
- Python selenium webdriver设置js操作页面滚动条
js2 = "window.scrollTo(0,0);" #括号中为坐标 当不知道需要的滚动的坐标大小时: weizhi2 = driver.find_element_by_id ...
随机推荐
- VMware Pro 14.1.2 官方正式版及激活密钥
热门虚拟机软件VMware Workstation Pro现已更新至14.1.2,14.0主要更新了诸多客户机操作系统版本,此外全面兼容Wind10创建者更新.12.0之后属于大型更新,专门为Win1 ...
- 详细集成Redis (一)
1.添加依赖 <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</a ...
- Oracle学习DayFive(PL/SQL)
一.PL/SQL简介 PL/SQL 是 Procedure Language & Structured Query Language 的缩写.PL/SQL 是对 SQL 语言存储过程语言的扩 ...
- CPU温度的实现
CPU温度需要安装的模块:apt-get install lm-sensors 然后再安装:pip install sensors.py 代码如下: #coding=utf-8import sen ...
- elasticsearch(2) 数据操作——查询
一 文档 ES面向文档,并且使用JSON作为文档序列化格式,对于ES来说,文档特指根对象序列化成的JSON数据,以唯一ID标识并存储于ES中. 文档元数据 三个必须的元数据节点 1._index ...
- 简单搭个webapp开发框架
集成开发工具idea 服务器容器Tomcat 第三方依赖管理maven 暂时不集成 (spring+springmvc+mybatis(数据持久层存取)+dubbo+zookeeper(集群调度)) ...
- 马凯军201771010116《面向对象与程序设计Java》第十六周知识学习总结
一:理论知识部分 1.线程的概念: 程序是一段静态的代码,它是应用程序执行的蓝 本. ‐进程是程序的一次动态执行,它对应了从代码加 载.执行至执行完毕的一个完整过程. 多线程是进程执行过程中产生的多条 ...
- 查找数组中重复的唯一元素+时间复杂度O(n)+空间复杂度O(1)
这是我BIGO前端面试时,面试官给我出的一道题,题目是长度为N的数组,元素大小范围在[1,N-1],只有一个重复的元素,用O(n)的时间复杂度和O(1)的空间复杂度找出来这个重复的元素, 大致思路 1 ...
- vmware10.0.1安装redhat linux6.2每次启动vm崩溃问题解决!
最近在学习linux技术,安装了一套redhat linux6.2的环境,里面有软件若干,wmare用的是10.0.1的,最近每次出现登陆界面,输入root登陆后,wm就报错vmui不可恢复错误MEM ...
- java 每间隔一段时间执行一段代码
Java中java.util.Timer类中有若干个schedule的重载方法,其中 void schedule(TimerTask task, long delay, long period ) 安 ...