Python 中的Selenium异常处理实例代码


Posted in Python onMay 03, 2018

自动化测试执行过程中,难免会有错误/异常出现,比如测试脚本没有发现对应元素,则会立刻抛出NoSuchElementException异常。这时不要怕,肯定是测试脚本或者测试环境哪里出错了!那如何处理才是关键?因为一般只是局部有问题,为了让脚本继续执行,so我们可以用try...except...raise捕获异常。该捕获异常后可以打印出相应的异常原因,这样以便于分析异常原因。

下面将举例说明,当异常抛出后将信息打印在控制台,同时截取当前浏览器窗口,作为后续bug的依据给相应开发人员更好下定位问题。代码如下:

import unittest
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException  #导入NoSuchElementException
class ExceptionTest(unittest.TestCase):
  def setUp(self):
    self.driver = webdriver.Chrome()
    self.driver.get("https://www.baidu.com")
  def test_exception(self):
    driver = self.driver
    try:
      search_text = driver.find_element_by_id("ss")
      self.assertEqual('百度一下', search_text.get_attribute("value"))
    except NoSuchElementException:
      file_name = "no_such_element.png"
      #driver.save_screenshot(file_name)
      driver.get_screenshot_as_file(file_name) 
      raise  #抛出异常,注释后则不抛出异常
  def tearDown(self):
    self.driver.quit()
if __name__ == '__main__':
  unittest.main(verbosity=2)

运行有异常,结果如下:

Python 中的Selenium异常处理实例代码

上面代码中用到WebDriver内置的捕获屏幕并保存的方法,如这里的save_screenshot(filename)方法和save_screenshot_as_file(filename)方法,在测试异常抛出时,同时截取浏览器屏幕并以自定义的图片文件名保存在指定路径(上面代码为当前路径)。

又如当一个元素呈现在DOM,但它是不可见的,不能与之进行交互,异常将抛出,以百度首页的登录为例,当元素不能不可见时,抛出ElementNotVisibleException的异常,代码如下:

import unittest
from selenium import webdriver
from selenium.common.exceptions import ElementNotVisibleException  #导入ElementNotVisibleException
class ExceptionTest(unittest.TestCase):
  def setUp(self):
    self.driver = webdriver.Chrome()
    self.driver.get("https://www.baidu.com")
  def test_exception(self):
    driver = self.driver
    try:
      login = driver.find_element_by_name("tj_login")
      login.click()
    except ElementNotVisibleException:
      raise  
  def tearDown(self):
    self.driver.quit()
if __name__ == '__main__':
  unittest.main(verbosity=2)

运行有异常,结果如下:

Python 中的Selenium异常处理实例代码

下面将列举selenium常见的异常:

Python 中的Selenium异常处理实例代码

总结

以上所述是小编给大家介绍的Python 中的Selenium异常处理实例,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
Python 的 Socket 编程
Mar 24 Python
Python中Class类用法实例分析
Nov 12 Python
在windows系统中实现python3安装lxml
Mar 23 Python
利用python程序帮大家清理windows垃圾
Jan 15 Python
python中map()函数的使用方法示例
Sep 29 Python
在python中用url_for构造URL的方法
Jul 25 Python
Python 切分数组实例解析
Nov 07 Python
python GUI库图形界面开发之PyQt5开发环境配置与基础使用
Feb 25 Python
学习python需要有编程基础吗
Jun 02 Python
python 最简单的实现适配器设计模式的示例
Jun 30 Python
python中pandas对多列进行分组统计的实现
Jun 18 Python
Python中递归以及递归遍历目录详解
Oct 24 Python
Python读写/追加excel文件Demo分享
May 03 #Python
windows下安装Python的XlsxWriter模块方法
May 03 #Python
python使用openpyxl库修改excel表格数据方法
May 03 #Python
python实现跨excel的工作表sheet之间的复制方法
May 03 #Python
Python利用openpyxl库遍历Sheet的实例
May 03 #Python
python实现简单淘宝秒杀功能
May 03 #Python
Python实现的求解最小公倍数算法示例
May 03 #Python
You might like
php笔记之:初探PHPcms模块开发介绍
2013/04/26 PHP
深入PHP empty(),isset(),is_null()的实例测试详解
2013/06/06 PHP
浅析PHP中strlen和mb_strlen的区别
2014/08/31 PHP
PHP发送AT指令实例代码
2016/05/26 PHP
浅谈PHP检查数组中是否存在某个值 in_array 函数
2016/06/13 PHP
jQuery 幻灯片插件(带缩略图功能)
2011/01/24 Javascript
Jquery 模板数据绑定插件的使用方法详解
2013/07/08 Javascript
webapp框架AngularUI的demo改造之路
2014/12/21 Javascript
JSONP跨域GET请求解决Ajax跨域访问问题
2014/12/31 Javascript
JS留言功能的简单实现案例(推荐)
2016/06/23 Javascript
详解Vue中状态管理Vuex
2017/05/11 Javascript
js时间戳与日期格式之间相互转换
2017/12/11 Javascript
解决iview打包时UglifyJs报错的问题
2018/03/07 Javascript
Vue编写可显示周和月模式的日历 Vue自定义日历内容的显示
2019/06/26 Javascript
vue+element-ui表格封装tag标签使用插槽
2020/06/18 Javascript
python关闭windows进程的方法
2015/04/18 Python
Python生成随机验证码的两种方法
2015/12/22 Python
python多线程方式执行多个bat代码
2016/06/07 Python
Python中return self的用法详解
2018/07/27 Python
Python编程图形库之Pillow使用方法讲解
2018/12/28 Python
对Python的交互模式和直接运行.py文件的区别详解
2019/06/29 Python
Python函数的定义方式与函数参数问题实例分析
2019/12/26 Python
pycharm 对代码做静态检查操作
2020/06/09 Python
python mock测试的示例
2020/10/19 Python
草莓网英国官网:Strawberrynet UK
2017/02/12 全球购物
ToysRus日本官网:玩具反斗城
2018/09/08 全球购物
HOTEL INFO英国:搜索全球酒店
2019/08/08 全球购物
Lungolivigno Fashion官网:高级时装在线购物
2020/10/17 全球购物
同步和异步有何异同,在什么情况下分别使用他们?
2012/12/28 面试题
举例说明类变量和实例变量的区别
2016/06/30 面试题
正风肃纪剖析材料
2014/09/30 职场文书
贫困证明怎么写
2015/06/16 职场文书
薪资证明范本
2015/06/19 职场文书
2019暑假学生安全口号
2019/06/27 职场文书
教你一步步实现一个简易promise
2021/11/02 Javascript
vue+iview实现手机号分段输入框
2022/03/25 Vue.js