前言

在页面操作中,可能会出现一些非预期的弹框,就拿最简单的登录场景来说,在登录成功后进入页面前,可能弹出某类提示信息的窗体,这类窗体的共性是:非必然出现。也就是说,当你登录系统的外部条件满足时,不会出现;否则出现,且阻止了页面的加载。针对该类问题,本文介绍一个小技巧来处理此类或有或无的窗体弹框。

为什么需要处理或有或无的弹框

在脚本开发中,我们重视脚本的稳定性,除了系统页面发生更改导致脚本必须修正外,其他的外界因素,如此类或有或无的弹框,就可能后续导致脚本的运行失败,所以,脚本应该尽力将潜在的问题处理掉,否则,随着自动化覆盖面的扩大,后期脚本维护会成为严重的技术债。另外,脚本不稳定的自动化基本是在走过场,既不能有效实现回归的目的,也可能摧毁团队对自动化的信心。在此,我们不讨论后期影响,只关注这种场景的处理方法。

处理方法

Selenium是考虑到此类场景的,所以提供了相当周到的处理方法。

核心代码如下:
from selenium.webdriver.support import expected_conditions as EC#判断弹框是否出现,如果出现则点击取消,否则无须处理
result = EC.alert_is_present()(browser) # 如果存在 返回alter对象,否则返回false, 源码
if result:print(result.text)result.dismiss()
else:pass


上面代码,如果没有弹框,脚本正常执行;否则,执行弹框的dismiss()方法,取消弹框,当然也可能是调用弹框的accept()方法,确认弹框,根据实际情况定吧。

四 其他资源

关于python学习、分享、交流,笔者开通了微信公众号【小蟒社区】,感兴趣的朋友可以关注下,欢迎加入,建立属于我们自己的小圈子,一起学python。

转载于:https://blog.51cto.com/2681882/2287649

python selenium系列(六)实战技巧之弹框处理相关推荐

  1. python自动化框架2019_《一头扎进》系列之Python+Selenium自动化测试框架实战篇6 - 价值好几K的框架,呦!这个框架还真牛叉哦!!!...

    1. 简介 本文开始介绍如何通过unittest来管理和执行测试用例,这一篇主要是介绍unittest下addTest()方法来加载测试用例到测试套件中去.用addTest()方法来加载我们测试用例到 ...

  2. python selenium教程.pdf_Python实战:selenium教程(12)

    什么是selenium ? selenium 是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户 在操作一样.支持的浏览器包括IE(7, 8, 9, 10, 1 ...

  3. Python+Selenium自动化测试项目实战

    第 1 章 自动化测试 1.1.自动化测试介绍 自动化测试就是通过自动化测试工具帮我们打开浏览器,输入网址,输入账号密码登录,及登录后的操作,总的说来自动化测试就是通过自动化测试脚本来帮我们从繁琐重复 ...

  4. 一文8个步骤从0到1实现Python+Selenium自动化测试项目实战【建议收藏】

    目录 第 1 章.自动化测试 第 2 章.Python基础 第 3 章.元素定位方式 第 4 章.元素 | 浏览器操作方法 第 5 章.元素等待 第 6 章.鼠标和键盘操作 第 7 章.UnitTes ...

  5. Python+Selenium自动化测试项目实战【建议收藏】

    第 1 章 自动化测试 1.1.自动化测试介绍 自动化测试就是通过自动化测试工具帮我们打开浏览器,输入网址,输入账号密码登录,及登录后的操作,总的说来自动化测试就是通过自动化测试脚本来帮我们从繁琐重复 ...

  6. 【Python学习系列六】Python语言基本语法

    1. Python语言简介 Python是一种面向对象的解释型计算机程序设计语言,由Guido van Rossum于1989年发明,第一个公开发行版发行于1991年. Python是纯粹的自由软件, ...

  7. 【Python算法系列十一】二叉树的3种遍历方式

    二叉树的遍历是指从根结点出发,按照某种次序依次访问二叉树中所有结点,使得每个结点被访问一次且仅被访问一次. 遍历二叉树的方法主要分 3 种:先序遍历.中序遍历和后序遍历: 先序遍历指最先遍历节点本身, ...

  8. Python selenium 控制 360安全浏览器

    目前网上比较活跃的国内浏览器,几乎都是基于开源的谷歌Chromium浏览器修改的. 360安全浏览器基于Chromium(google谷歌)+Trident(IE)双内核.         建议还是使 ...

  9. 【SQL开发实战技巧】系列(六):从执行计划看NOT IN、NOT EXISTS 和 LEFT JOIN效率,记住内外关联条件不要乱放

    系列文章目录 [SQL开发实战技巧]系列(一):关于SQL不得不说的那些事 [SQL开发实战技巧]系列(二):简单单表查询 [SQL开发实战技巧]系列(三):SQL排序的那些事 [SQL开发实战技巧] ...

最新文章

  1. 修改数据无法提交_MySQL数据库精讲:一文讲解MySQL事务隔离!
  2. RabbitMQ消息队列应用
  3. Python学习札记(十三) Function3 函数参数二
  4. 朴素贝叶斯算法-分类算法
  5. windowblinds 6_过年回家选车很重要!锐骐6强势对比纳瓦拉
  6. Python数据分析之一元线性回归
  7. SCPPO(四):框架的学习
  8. 网站服务器 凭证,登录云服务器的凭证是什么
  9. 自编译最新稳定版 128M NAND WNDR4300V1 Openwrt Lean固件
  10. 如何将自己喜欢的图片设置为文件图标
  11. 数组、链表、哈希、队列、栈数据结构特点,各自优点和缺点
  12. Python实现文字转图片
  13. @keyup.enter.native不生效问题解决
  14. C语言标准库深度整理
  15. ZZULIOJ1086: ASCII码排序(多实例测试)
  16. 大神教芯片数据手册怎么读
  17. asm的开机自启动问题--总结--供参考
  18. Revit翻模软件:管件二维注释比例改变和【管道翻模】
  19. UDP协议校验和的计算
  20. 如何在HTML界面上显示特殊字符(如尖括号等)

热门文章

  1. Java--File文件操作
  2. 又一个绝对棒的对话框插件fancybox v1.3.4
  3. 浅谈android4.0开发之GridLayout布局
  4. 网站测试自动化系统—数据驱动测试
  5. mysql 存储过程代码_MySQL存储过程及常用函数代码解析
  6. python网络编程项目_Python网络编程攻略
  7. Golang——变量和常量详解
  8. mysql function_Koa2 amp; mySQL amp; PM2 搭建后端服务
  9. c语言 %-20s,一次 Rust 和C语言的混搭
  10. win10运行vue项目_vue+webpack在window10环境下搭建及遇到的问题