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文件与文件夹常见基本操作总结
Sep 19 Python
Python用threading实现多线程详解
Feb 03 Python
python2和python3的输入和输出区别介绍
Nov 20 Python
Python图像处理之图像的缩放、旋转与翻转实现方法示例
Jan 04 Python
python绘制双Y轴折线图以及单Y轴双变量柱状图的实例
Jul 08 Python
python判断无向图环是否存在的示例
Nov 22 Python
Python生成六万个随机,唯一的8位数字和数字组成的随机字符串实例
Mar 03 Python
使用python客户端访问impala的操作方式
Mar 28 Python
python中前缀运算符 *和 **的用法示例详解
May 28 Python
tensorflow使用CNN分析mnist手写体数字数据集
Jun 17 Python
Python中OpenCV实现简单车牌字符切割
Jun 11 Python
Python 图片添加美颜效果
Apr 28 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
人工智能开始玩《星际争霸2》 你的操作跟得上吗?
2017/08/11 星际争霸
The specified CGI application misbehaved by not returning a complete set of HTTP headers
2011/03/31 PHP
探讨:如何使用PHP实现计算两个日期间隔的年、月、周、日数
2013/06/13 PHP
PHP实现的简单日历类
2014/11/29 PHP
Yii扩展组件编写方法实例分析
2015/06/29 PHP
PHP中时间加减函数strtotime用法分析
2017/04/26 PHP
找到一点可怜的关于dojo资料,谢谢作者!
2006/12/06 Javascript
JQuery下关于$.Ready()的分析
2009/12/13 Javascript
JavaScript实现的链表数据结构实例
2015/04/02 Javascript
javascript组合使用构造函数模式和原型模式实例
2015/06/04 Javascript
使用AngularJS实现表单向导的方法
2015/06/19 Javascript
jquery实现华丽的可折角广告代码
2015/09/02 Javascript
js实现四舍五入完全保留两位小数的方法
2016/08/02 Javascript
Javascript将字符串日期格式化为yyyy-mm-dd的方法
2016/10/27 Javascript
iphone刘海屏页面适配方法
2019/05/07 Javascript
使用vscode快速建立vue模板过程详解
2019/10/10 Javascript
如何使用JavaScript检测空闲的浏览器选项卡
2020/05/28 Javascript
[02:04]完美世界城市挑战赛秋季赛报名开始 谁是solo路人王?
2019/10/10 DOTA
Python3实现Web网页图片下载
2016/01/28 Python
Python爬虫获取图片并下载保存至本地的实例
2018/06/01 Python
python的常见矩阵运算(小结)
2019/08/07 Python
python 函数中的参数类型
2020/02/11 Python
在pycharm中为项目导入anacodna环境的操作方法
2020/02/12 Python
使用jupyter Nodebook查看函数或方法的参数以及使用情况
2020/04/14 Python
你需要学会的8个Python列表技巧
2020/06/24 Python
波兰品牌内衣及泳装网上商店:Astratex.pl
2017/02/03 全球购物
英国马莎百货印度官网:Marks & Spencer印度
2020/10/08 全球购物
电大学习个人自我评价范文
2013/10/04 职场文书
高中生毕业学习总结的自我评价
2013/11/14 职场文书
银行业务授权委托书
2014/10/10 职场文书
研讨会致辞
2015/07/31 职场文书
2019奶茶店创业计划书范本!
2019/07/15 职场文书
聘任书的格式及模板
2019/10/28 职场文书
Golang中异常处理机制详解
2021/06/08 Golang
分享MySQL常用 内核 Debug 几种常见方法
2022/03/17 MySQL
详解apache编译安装httpd-2.4.54及三种风格的init程序特点和区别
2022/07/15 Servers