在实际系统中,在完成某些操作时会弹出对话框来提示,主要分为"警告消息框","确认消息框","提示消息对话"三种类型的对话框。

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()方法,下面我这边写了一个小小的页面,这里我把三种对话框全部包括下来,然后来进行模拟实际过程中遇到的对话框。

hello girl

function showAlert(){

document.getElementById("textSpan").innerHTML="";

if(confirm("你是帅哥吗?")){

document.getElementById("textSpan").innerHTML="您为何如此自信?";

}else{

document.getElementById("textSpan").innerHTML="您为何如此谦虚?";

}

}

function showPro(){

document.getElementById("textSpan").innerHTML="";

con = prompt("输入1为强哥聪明,输入2为左哥笨");

if(con==1){

document.getElementById("textSpan").innerHTML="强哥是真聪明啊";

}else if(con==2){

document.getElementById("textSpan").innerHTML="左哥是真笨啊";

}else{

document.getElementById("textSpan").innerHTML="您没有按要求输入,请重新输入";

}

}

function showAlert2(){

document.getElementById("textSpan").innerHTML="";

alert("用我三世烟火,换你一世迷离");

}

下面的三个例子,主要来演示如何处理上面说的三种对话框。

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") #弹出框内输入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删除网页弹出对话框_python selenium-webdriver 处理JS弹出对话框相关推荐

  1. python中网页关闭再打开_Python Selenium 之关闭窗口close与quit的方法

    selenium关闭窗口有两个方法,close与quit,我们稍作研究便知道这两个方法的区别. 1.看源码或API 这是close()的说明: Closes the current window. 关 ...

  2. python爬虫工程师 成长之路八 Selenium WebDriver

    文章目录 Selenium WebDriver 简介 Selenium WebDriver 原理 Selenium WebDriver 安装 Selenium WebDriver 使用 浏览器常用操作 ...

  3. python 弹出对话框_python+selenium 抓取弹出对话框信息

    抓取弹出对话框信息,困挠了我很久,我百度了很久,一直没有找到我想要的内容.最近学习到了. 有两种方法: 1.driver.switch_to.alert.text 2.result = EC.aler ...

  4. python写界面输入测试脚本_python+Selenium自动化测试——输入,点击操作

    这是我的第一个真正意思上的自动化脚本. 1.练习的测试用例为: 打开百度首页,搜索"胡歌",然后检索列表,有无"胡歌的新浪微博"这个链接 2.在写脚本之前,需要 ...

  5. python的等待代码是什么_Python selenium 三种等待方式详解

    1.目的背景 解决问题:下拉框定位不到.弹框定位不到-各种定位不到,其实大多数情况下就是两种问题:1 有frame,2 没有加等待. 原因:代码运行速度快,而浏览器加载渲染速度慢 解决办法:加等待,目 ...

  6. python爬虫动态加载页面_Python+Selenium爬取动态加载页面(2)

    注: 上一篇<Python+Selenium爬取动态加载页面(1)>讲了基本地如何获取动态页面的数据,这里再讲一个稍微复杂一点的数据获取全国水雨情网.数据的获取过程跟人手动获取过程类似,所 ...

  7. python爬取qq群成员_Python selenium 加载并保存QQ群成员,去除其群主、管理员信息的示例代码...

    一位伙计自己开了个游戏室,想在群里拉点人,就用所学知识帮帮忙,于是就有了这篇文章,今天小编特此通过实例代码给大家介绍下Python selenium 加载并保存QQ群成员去除其群主.管理员信息的示例代 ...

  8. python对浏览器的常用操作_python+selenium(4)--浏览器操作的基本方法

    关于自动化测试其实很多时候都是为了节省时间做一些大批量的复用性工作,在正式学习自动化脚本编写之前,这里引用陈建忠老师的博客内容,希望大家能了解一下关于什么是自动化的知识,在日后做自动化测试的过程中会根 ...

  9. python删除指定位置的字符串_python去除区域 python删除字符串中指定位置字符

    python删除字符串中指定位置字符 原程序是这样的: ser = serial.Serial("/dev/ttyAMA0", 9600) def main字符串的话,你可以把他当 ...

最新文章

  1. mysql中Table is read only 的解决方法小结
  2. SparkSQL愿景
  3. [題解](并查集)luogu_P2391 白雪皚皚
  4. 用Python实现智能推荐!某音,某宝都是智能推荐的,你都知道吗?
  5. Adobe illustrator 剪切蒙版 - 连载 14
  6. ios 数组中的字典排序_题解 | 26.删除排序数组中的重复项
  7. mysql打开闪退 ini_解决MySql客户端秒退(找不到my.ini)
  8. mysql 7 for windows_Mysql 5.7 for windows 免安装版(解压版)安装和配置
  9. 【微软的VDI】Windows Server 2012 RDS存储相关
  10. mysql 参数 列 排序_将参数放入MySQL IN()后,按降序对列进行排序?
  11. python画条形图-python使用Matplotlib画条形图
  12. 视频转换器如何将腾讯QLV格式转换成MP4视频文件
  13. 开始Flex Builder 3
  14. java枚举类的作用及其使用
  15. codeforces 1183H
  16. 【绘画素材】日系插画“人物表情”素材参考!告别脸部僵硬~
  17. 道路智慧路灯:山西省长治市道路智慧灯杆(多功能交通一体式综合杆)项目案例分享
  18. 心脏线绘制python_心脏线怎么画?
  19. W: 校验数字签名时出错。此仓库未被更新,所以仍然使用此前的索引文件。
  20. 【Java8 环境安装】Java1.8JDK环境安装jdk-8u361-windows-x64

热门文章

  1. 电网络节点电压matlab,电力网潮流电压计算例题与matlab程序技术总结.docx
  2. unity3d快捷键大全unity3d快速学习
  3. itunes 歌曲导出 和上传
  4. 盲盒拓客商家联盟红包裂变抽奖源码
  5. 不超过十个人的好电影
  6. 一级造价工程师(安装)- 计量笔记 - 第一章第三节安装工程常用管件和附件
  7. 【烙铁使用规范】—— 烙铁头使用及保养
  8. 安装django-cors-headers
  9. mysql 索引的作用是什么_索引是什么?索引的作用?
  10. 50行python游戏代码_使用50行Python代码从零开始实现一个AI平衡小游戏