本篇转自博客:上海-小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自动化-处理浏览器弹窗(转载)相关推荐

  1. python 浏览器自动化 弹窗控制_Selenium2+Python自动化-处理浏览器弹窗(转载)

    我们在浏览网页时经常会碰到各种花样的弹窗,在做UI自动化测试的时候势必要处理这些弹窗,这里就介绍一下目前前端界两种弹窗的处理方法. 一.alert弹窗 这种弹窗是最简单的一种,Selenium里有自带 ...

  2. python处理网页弹窗_Selenium2+Python自动化-处理浏览器弹窗(转载)

    我们在浏览网页时经常会碰到各种花样的弹窗,在做UI自动化测试的时候势必要处理这些弹窗,这里就介绍一下目前前端界两种弹窗的处理方法. 一.alert弹窗 这种弹窗是最简单的一种,Selenium里有自带 ...

  3. Selenium2+python自动化24-js处理富文本(带iframe)

    前言 上一篇Selenium2+python自动化23-富文本(自动发帖)解决了富文本上iframe问题,其实没什么特别之处,主要是iframe的切换,本篇讲解通过js的方法处理富文本上iframe的 ...

  4. Selenium2+python自动化33-文件上传(send_keys)

    前言 文件上传是web页面上很常见的一个功能,自动化成功中操作起来却不是那么简单. 一般分两个场景:一种是input标签,这种可以用selenium提供的send_keys()方法轻松解决: 另外一种 ...

  5. Selenium2+python自动化54-unittest生成测试报告(HTMLTestRunner)

    前言 批量执行完用例后,生成的测试报告是文本形式的,不够直观,为了更好的展示测试报告,最好是生成HTML格式的. unittest里面是不能生成html格式报告的,需要导入一个第三方的模块:HTMLT ...

  6. Selenium2+python自动化43-判断title(title_is)

    前言 获取页面title的方法可以直接用driver.title获取到,然后也可以把获取到的结果用做断言. 本篇介绍另外一种方法去判断页面title是否与期望结果一种,用到上一篇Selenium2+p ...

  7. Selenium2+python自动化28-table定位

    前言 在web页面中经常会遇到table表格,特别是后台操作页面比较常见.本篇详细讲解table表格如何定位. 一.认识table 1.首先看下table长什么样,如下图,这种网状表格的都是table ...

  8. Selenium2+python自动化7-xpath定位

    前言 在上一篇简单的介绍了用工具查看目标元素的xpath地址,工具查看比较死板,不够灵活,有时候直接复制粘贴会定位不到.这个时候就需要自己手动的去写xpath了,这一篇详细讲解xpath的一些语法. ...

  9. Selenium2+python自动化57-捕获异常(NoSuchElementException)

    Selenium2+python自动化57-捕获异常(NoSuchElementException) 参考文章: (1)Selenium2+python自动化57-捕获异常(NoSuchElement ...

最新文章

  1. 一次 SQL 查询优化原理分析(900W+ 数据,从 17s 到 300ms)
  2. 2019微生物组—宏基因组分析技术专题研讨会第四期
  3. 我知道的一些 ”运行“ 窗体下的命令,个人使用
  4. ESAComp 2020中文版
  5. 学习笔记(47):Python实战编程-pack布局
  6. 系统架构师-基础到企业应用架构-服务层
  7. 【51单片机快速入门指南】4.3.4: MPU6050使用Madgwick AHRS算法实现六轴姿态融合获取四元数、欧拉角
  8. 随便讲讲自己了解的ajax在JQ中的应用
  9. python自动化测试环境搭建_(一)Python+Appium自动化测试环境搭建
  10. python xlwings api_python xlwings API接口之NumberFormat用法
  11. 在css中使用hover来控制其他元素的样式,该两个元素必须是父子元素
  12. 问题记录——Unity PackageManager下载失败
  13. 使用java做地图_在地图中使用Java
  14. 51单片机步进电机c语言程序,51单片机的步进电机c语言驱动程序
  15. git使用时报错:fatal: unable to access ‘xxx‘ : Failed to connect to github.com port 443 after: 【Time out】
  16. 统计碱基数目、GC含量、read数、最长的read、最短的read及平均read长度
  17. android 国家代码
  18. 微信多开脚本2.0 批处理bat,可一键关闭微信
  19. Python 在问答频道中刷题积累到的小技巧(二)
  20. i2c-test工具说明文档

热门文章

  1. 批处理检查电脑是否中了冰河木马
  2. 数据库基本概念 - 表、字段、sql语句
  3. maven与eclipse连接的配置
  4. 一个只有十行的精简MVVM框架(下篇)
  5. BZOJ.2212.[POI2011]Tree Rotations(线段树合并)
  6. unittest框架(三)unittest+yaml数据驱动
  7. Atitit.提升api兼容性的方法 v3 q326
  8. [Elasticsearch] 部分匹配 (三) - 查询期间的即时搜索
  9. 打开vsd_低温修正下的CDFA与VSD
  10. linux gcc 静态编译,GCC 程序编译的静态链接和动态链接