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

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") #弹出框内输入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 消息框的处理的更多相关文章

  1. Python -- Gui编程 -- Tkinter的使用 -- 对话框消息框

    1.消息框 tkMessageBox.py import tkinter from tkinter import messagebox def cmd(): global n global butto ...

  2. Python——pyqt5——消息框(QMessageBox)

    一.提供的类型 QMessageBox.information 信息框 QMessageBox.question 问答框 QMessageBox.warning 警告 QMessageBox.ctit ...

  3. pyautogui 文档(四):消息框功能

    消息框功能 PyAutoGUI利用PyMsgBox中的消息框函数提供跨平台的纯Python方式来显示JavaScript样式的消息框.提供了四个消息框功能: alert()函数 >>> ...

  4. 一步步开发自己的博客 .NET版(10、前端对话框和消息框的实现)

    关于前端对话框.消息框的优秀插件多不胜数.造轮子是为了更好的使用轮子,并不是说自己造的轮子肯定好.所以,这个博客系统基本上都是自己实现的,包括日志记录.响应式布局.评论功能等等一些本可以使用插件的.好 ...

  5. WPF弹出带蒙板的消息框

    效果图 思路 拿到父级窗体的内容,放入一个容器里,再在容器里放入一个半透明层.将整个容器赋给父级窗体的内容. 关闭时反向操作. 代码 消息窗弹出时 /// <summary> /// 弹出 ...

  6. JavaScript (If...Else和Switch和循环遍历) 语句以及常用消息框

    If...Else 语句 JavaScript中if...else语句和Java中的语法和使用方法是一样的. 只是在JavaScript中要使用小写字母.使用大写的 IF 会出错! 至于if...el ...

  7. 【C#】分享一个可携带附加消息的增强消息框MessageBoxEx

    --------------201507160917更新--------------- 无意中发现标准消息框在Windows7是有声音的,只是在Windows server 2008(R2)无声,而我 ...

  8. JavaScript 消息框+特殊字符

    JavaScript 中创建三种消息框:警告框.确认框.提示框: 1.警告框: 警告框经常用于确保用户可以得到某些信息. 当警告框出现后,用户需要点击确定按钮才能继续进行操作 语法:alert(&qu ...

  9. WPF自定义控件与样式(13)-自定义窗体Window & 自适应内容大小消息框MessageBox

    一.前言 申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐步发布的等,若有不明白的地方可以参考本系列前面的文章,文末附有部分文章链接. 本文主要内容: 自定义 ...

随机推荐

  1. 删除childNodes获取的文本节点

    function del_ff(elem) { var elem_child = elem.childNodes; for (var i = 0; i < elem_child.length; ...

  2. tp5 搜索之后保留分页

    当接收到参数是执行搜索 public function index($name=null){ if (isset($_REQUEST['username'])) { $name = $_REQUEST ...

  3. c# new三种用法

    前几天去家公司面试,有一道这样的题:写出c#中new关键字的三种用法,思前想后挖空心思也只想出了两种用法,回来查了下msdn,还真是有第三种用法:用于在泛型声明中约束可能用作类型参数的参数的类型,这是 ...

  4. [Xcode 实际操作]七、文件与数据-(12)数据持久化存储框架CoreData的使用:查找CoreData中的数据

    目录:[Swift]Xcode实际操作 本文将演示如何查找数据持久化对象. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] import UIKit //引入数据持 ...

  5. JVM虚拟机的大概了解(新人面试必看!)

    一. 引言,环境安装测试中的代码解析       1. HotSpot(TM) 64-bit Server VM(build 25.181-b13,mixed mode),这是多种     HotSo ...

  6. jsp学习与提高(一)——JSP生命周期、三大指令及动作

    1.jsp定义: 1.1以java语言为脚本语言,运行在服务端的程序: 1.2处理客户请求,生成页面 1.3其本质是个sevlet会生成.java文件编译后再生成.class文件 2.jsp生命周期( ...

  7. 今天是 Java 诞生日,Java 24 岁了!

    今天是 Java 诞生日,Java 今年 24 岁了,比栈长还年轻..还有得搞,别慌!作为一名Java语言的学习者,对Java的起源和发展有个大概的了解应是必要的. 1991年,Sun公司成立Gree ...

  8. 6.计算字段 ---SQL

    提示:客户端与服务器的格式在SQL语句内可完成的许多转换和格式化工作都可以直接在客户端应用程序内完成.但一般来说,在数据库服务器上完成这些操作比在客户端中完成要快得多. 一.拼接字段 拼接(conca ...

  9. 关于EasyML的使用

    一.安装IntelliJ Idea 具体安装过程比较简单.但是遇到一个问题,如今LInux版本的IntelliJ的安装需要jdk1.8及以上版本的支持,但是EasyML目前仅支持jdk1.7的环境. ...

  10. 常见的HTTP状态码说明

    1.说明 HTTP服务器状态代码定义(Status Code Definitions) 做测试的时候,会产生比较多的HTTP错误,查看其错误,有超时的,链接不到图片的,连接不到服务器等等,很多人经常忘 ...