Selenium2+Python自动化-处理浏览器弹窗(转载)
本篇转自博客:上海-小T
原文地址:http://blog.csdn.net/real_tino/article/details/59068827
我们在浏览网页时经常会碰到各种花样的弹窗,在做UI自动化测试的时候势必要处理这些弹窗,这里就介绍一下目前前端界两种弹窗的处理方法。
一、alert弹窗
这种弹窗是最简单的一种,Selenium里有自带的方法来处理它,用switch_to.alert先定位到弹窗,然后使用一系列方法来操作:
- accept - 点击【确认】按钮
- dismiss - 点击【取消】按钮(如有按钮)
- send_keys - 输入内容(如有输入框)
这里举一个菜鸟教程上的一个例子:http://www.runoob.com/try/try.php?filename=tryjs_alert,在页面左边点击【显示警告框】就会弹出一个alert弹窗:
我们用以下代码就能实现切换至弹窗并点击【确定】按钮的效果:
al = driver.switch_to_alert()
al.accept()
这里这个switch_to_alert()其实是旧写法,照理应该是用switch_to.alert(),但是新写法却会报错,目前猜测是版本问题,可能不支持新写法,这里就先用旧写法。
以下是完整代码,为了运行的时候看得清楚,我加了两处等待:
# encoding:utf-8from selenium import webdriver
import timedriver = webdriver.Firefox()
driver.get("http://www.runoob.com/try/try.php?filename=tryjs_alert") driver.switch_to.frame("iframeResult") driver.find_element_by_xpath("html/body/input").click() time.sleep(1) al = driver.switch_to_alert() time.sleep(1) al.accept()
二、自定义弹窗
由于alert弹窗不美观,现在大多数网站都会使用自定义弹窗,使用Selenium自带的方法就驾驭不了了,此时就要搬出JS大法。这里举一个新世界教育官网首页的例子:
大家能看到,图中的这种弹窗就是现在主流的表现形式,处理这种弹窗可以利用HTML DOM Style 对象,有一个display属性,可以设置元素如何被显示,
详细解释可以参考http://www.w3school.com.cn/jsref/prop_style_display.asp。将display的值设置成none就可以去除这个弹窗了:
js = 'document.getElementById("doyoo_monitor").style.display="none";'
完整代码如下:
# encoding:utf-8from selenium import webdriver
import timedriver = webdriver.Firefox()
driver.get("http://sh.xsjedu.org/") time.sleep(1) js = 'document.getElementById("doyoo_monitor").style.display="none";' driver.execute_script(js)
是不是既简单又高效~
Selenium2+Python自动化-处理浏览器弹窗(转载)相关推荐
- python 浏览器自动化 弹窗控制_Selenium2+Python自动化-处理浏览器弹窗(转载)
我们在浏览网页时经常会碰到各种花样的弹窗,在做UI自动化测试的时候势必要处理这些弹窗,这里就介绍一下目前前端界两种弹窗的处理方法. 一.alert弹窗 这种弹窗是最简单的一种,Selenium里有自带 ...
- python处理网页弹窗_Selenium2+Python自动化-处理浏览器弹窗(转载)
我们在浏览网页时经常会碰到各种花样的弹窗,在做UI自动化测试的时候势必要处理这些弹窗,这里就介绍一下目前前端界两种弹窗的处理方法. 一.alert弹窗 这种弹窗是最简单的一种,Selenium里有自带 ...
- Selenium2+python自动化24-js处理富文本(带iframe)
前言 上一篇Selenium2+python自动化23-富文本(自动发帖)解决了富文本上iframe问题,其实没什么特别之处,主要是iframe的切换,本篇讲解通过js的方法处理富文本上iframe的 ...
- Selenium2+python自动化33-文件上传(send_keys)
前言 文件上传是web页面上很常见的一个功能,自动化成功中操作起来却不是那么简单. 一般分两个场景:一种是input标签,这种可以用selenium提供的send_keys()方法轻松解决: 另外一种 ...
- Selenium2+python自动化54-unittest生成测试报告(HTMLTestRunner)
前言 批量执行完用例后,生成的测试报告是文本形式的,不够直观,为了更好的展示测试报告,最好是生成HTML格式的. unittest里面是不能生成html格式报告的,需要导入一个第三方的模块:HTMLT ...
- Selenium2+python自动化43-判断title(title_is)
前言 获取页面title的方法可以直接用driver.title获取到,然后也可以把获取到的结果用做断言. 本篇介绍另外一种方法去判断页面title是否与期望结果一种,用到上一篇Selenium2+p ...
- Selenium2+python自动化28-table定位
前言 在web页面中经常会遇到table表格,特别是后台操作页面比较常见.本篇详细讲解table表格如何定位. 一.认识table 1.首先看下table长什么样,如下图,这种网状表格的都是table ...
- Selenium2+python自动化7-xpath定位
前言 在上一篇简单的介绍了用工具查看目标元素的xpath地址,工具查看比较死板,不够灵活,有时候直接复制粘贴会定位不到.这个时候就需要自己手动的去写xpath了,这一篇详细讲解xpath的一些语法. ...
- Selenium2+python自动化57-捕获异常(NoSuchElementException)
Selenium2+python自动化57-捕获异常(NoSuchElementException) 参考文章: (1)Selenium2+python自动化57-捕获异常(NoSuchElement ...
最新文章
- 一次 SQL 查询优化原理分析(900W+ 数据,从 17s 到 300ms)
- 2019微生物组—宏基因组分析技术专题研讨会第四期
- 我知道的一些 ”运行“ 窗体下的命令,个人使用
- ESAComp 2020中文版
- 学习笔记(47):Python实战编程-pack布局
- 系统架构师-基础到企业应用架构-服务层
- 【51单片机快速入门指南】4.3.4: MPU6050使用Madgwick AHRS算法实现六轴姿态融合获取四元数、欧拉角
- 随便讲讲自己了解的ajax在JQ中的应用
- python自动化测试环境搭建_(一)Python+Appium自动化测试环境搭建
- python xlwings api_python xlwings API接口之NumberFormat用法
- 在css中使用hover来控制其他元素的样式,该两个元素必须是父子元素
- 问题记录——Unity PackageManager下载失败
- 使用java做地图_在地图中使用Java
- 51单片机步进电机c语言程序,51单片机的步进电机c语言驱动程序
- git使用时报错:fatal: unable to access ‘xxx‘ : Failed to connect to github.com port 443 after: 【Time out】
- 统计碱基数目、GC含量、read数、最长的read、最短的read及平均read长度
- android 国家代码
- 微信多开脚本2.0 批处理bat,可一键关闭微信
- Python 在问答频道中刷题积累到的小技巧(二)
- i2c-test工具说明文档
热门文章
- 批处理检查电脑是否中了冰河木马
- 数据库基本概念 - 表、字段、sql语句
- maven与eclipse连接的配置
- 一个只有十行的精简MVVM框架(下篇)
- BZOJ.2212.[POI2011]Tree Rotations(线段树合并)
- unittest框架(三)unittest+yaml数据驱动
- Atitit.提升api兼容性的方法 v3 q326
- [Elasticsearch] 部分匹配 (三) - 查询期间的即时搜索
- 打开vsd_低温修正下的CDFA与VSD
- linux gcc 静态编译,GCC 程序编译的静态链接和动态链接