网页测试,最避免不了的就是弹出框,但是弹出框你真的分的清吗?

  • Alert
  • prompt
  • comfirm

先来认识一下这三个弹窗

代码如下

<input id="alert" onclick="alert('这是一个alert')" type="button" value="alert" /> 
<input id="confirm" onclick="confirm('确定?');" type="button" value="confirm" />
<input id="prompt" onclick="var name = prompt('请输入你的名字:','请输入你的名字'); document.write(name) " type="button" value="prompt" />

OK,下面来看看如何处理他们

1.导入包,和导入ActionChains类似

from selenium.webdriver.common.alert import Alert

2.四种操作

  • alert.text                                获取弹出框的文本
  • alert.dismiss()          拒绝警告框,点击取消或者右上角X关闭
  • alert.accept()                        接受警告框,点击确定
  • alert.send_keys(value)         模拟输入,向prompt的文本框输入字符

3.实战

 from selenium import webdriver
from selenium.webdriver.common.alert import Alert
import time driver=webdriver.Firefox()
driver.get("File://E:/python/alert/alert.html")
time.sleep(2)
pop=Alert(driver) #和ActionChains一样,需要初始化alert的驱动 #Alert
driver.find_element_by_id("alert").click()
print("alert",pop.text) #获得alert弹框的内容
time.sleep(1)
pop.accept() #点击确定 '''
权限验证
有时在弹出框内需要验证我们的权限,即输入账号密码
可以使用authenticate(username, password)的方法
''' #confirm
time.sleep(2)
confirm=driver.find_element_by_id("confirm")
confirm.click()
print("confirm accept",pop.text) #获得alert弹框的内容
pop.accept() #点击确定
time.sleep(2) confirm.click()
time.sleep(2)
print("confirm dismiss",pop.text)
pop.dismiss() #点击取消
time.sleep(2) #prompt
driver.find_element_by_id("prompt").click()
print("prompt",pop.text) #获得alert弹框的内容
pop.send_keys("lalala") #输入文字
time.sleep(3)
pop.accept() driver.close()

弹出框测试

selenium_Alert的更多相关文章

  1. 多测师讲解selenium_alert弹框定位_高级讲师肖sir

    from selenium import webdriverfrom time import sleepdrvier=webdriver.Chrome()url=r'F:\dcs\DCS课程安排\se ...

随机推荐

  1. Array Partition I

    Given an array of 2n integers, your task is to group these integers into n pairs of integer, say (a1 ...

  2. Python selenium 文件自动下载 (自动下载器)

    MyGithub:https://github.com/williamzxl 最新代码已经上传到Github,以下版本为stupid版本. 由于在下载过程中需要下载不同文件,所以可以把所有类型放在Va ...

  3. 【转】HTTP Header 详解

    HTTP(HyperTextTransferProtocol)即超文本传输协议,目前网页传输的的通用协议.HTTP协议采用了请求/响应模型,浏览器或其他客户端发出请求,服务器给与响应.就整个网络资源传 ...

  4. For in 与For of 区别

    For in 与For of  区别 for in遍历的是数组的索引(即键名)一般用于遍历对象:for(var index in obj):而for of遍历的是数组元素值:for(var value ...

  5. 语音识别完成诗句的查询功能,iOS AVSpeechSynthesis语音输出结果的诗歌APP

    前言 当前的APP的查询都是使用手动输入,不仅效率低,而且查询的语句的限制比较大,不能够方便的扩展. 如果能方便的扩展查询语句,那么APP的使用就会有很大的灵活性.可以设计各种问句和语句,可以方便的和 ...

  6. Android 设备兼容性(1)

    引用: Android官网 > 开发 > API 指南 > Introduction > Device Compatibility 1. 基本概念 Android被设计成能在各 ...

  7. win10 uwp 如何拖动一个TextBlock的文字到另一个TextBlock

    我在堆栈网看到有人问 如何拖动一个TextBlock的文字到另一个TextBlock 于是看到一个大神给出的方法,下面我就来和大家说下如何拖动 一开始我们需要一个界面,就放两个TextBlock 一个 ...

  8. C 数组使用时注意点

    数组注意点: 数组为静态时,初始化长度必为常量表达式 数组长度由最后一个元素决定其长度,可以指定特定元素,如: int arr[] = {0, 1, [5]=5, 6}; 没有提供初始值的元素赋值为0 ...

  9. 实验测试之------创建DBlink,查询远端的yang用户下的abcdedfa表,创建同义词

    --测试环境,20远端,30本地: --准备1,20远端建立表的同义词,用户信息: 1.11 ---------------------------------------------------准备 ...

  10. MongoDB聚合(count、distinct、group、MapReduce)

    1. count:返回集合中文档的数量. db.friend.count() db.friend.count({'age':24}) 增加查询条件会使count查询变慢. 2. distinct:找出 ...