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 相关文章推荐
Python3处理文件中每个词的方法
May 22 Python
Python中关于使用模块的基础知识
May 24 Python
Python中import导入上一级目录模块及循环import问题的解决
Jun 04 Python
python 打印对象的所有属性值的方法
Sep 11 Python
使用Python对SQLite数据库操作
Apr 06 Python
Python3之简单搭建自带服务器的实例讲解
Jun 04 Python
python操作excel文件并输出txt文件的实例
Jul 10 Python
对python mayavi三维绘图的实现详解
Jan 08 Python
python语言基本语句用法总结
Jun 11 Python
关于Flask项目无法使用公网IP访问的解决方式
Nov 19 Python
Python操作多维数组输出和矩阵运算示例
Nov 28 Python
Python3 Click模块的使用方法详解
Feb 12 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输入流php://input使用浅析
2014/09/02 PHP
20个2014年最优秀的PHP框架回顾
2014/10/22 PHP
PHP中的命名空间相关概念浅析
2015/01/22 PHP
PHP贪婪算法解决0-1背包问题实例分析
2015/03/23 PHP
ThinkPHP表单令牌错误的相关解决方法分析
2016/05/20 PHP
PHP 闭包详解及实例代码
2016/09/28 PHP
PHP + plupload.js实现多图上传并显示进度条加删除实例代码
2017/03/06 PHP
php生成微信红包数组的方法
2019/09/05 PHP
Yii框架where查询用法实例分析
2019/10/22 PHP
jQuery 动态酷效果实现总结
2009/12/27 Javascript
jquery.hotkeys监听键盘按下事件keydown插件
2014/05/11 Javascript
JsRender for index循环索引用法详解
2014/10/31 Javascript
JQuery动画与特效实例分析
2015/02/02 Javascript
php+ajax+jquery实现点击加载更多内容
2015/05/03 Javascript
javascript中offset、client、scroll的属性总结
2015/08/13 Javascript
鼠标拖动改变DIV等网页元素的大小的实现方法
2017/07/06 Javascript
十分钟带你快速了解React16新特性
2017/11/10 Javascript
使用classList来实现两个按钮样式的切换方法
2018/01/24 Javascript
vue.js使用watch监听路由变化的方法
2018/07/08 Javascript
详解在React-Native中持久化redux数据
2019/05/22 Javascript
JavaScript Window浏览器对象模型原理解析
2020/05/30 Javascript
JS定时器如何实现提交成功提示功能
2020/06/12 Javascript
[48:45]Ti4 循环赛第二日 NEWBEE vs EG
2014/07/11 DOTA
在Python中实现贪婪排名算法的教程
2015/04/17 Python
python字符串连接方法分析
2016/04/12 Python
图文讲解选择排序算法的原理及在Python中的实现
2016/05/04 Python
Python json 错误xx is not JSON serializable解决办法
2017/03/15 Python
详解Python3操作Mongodb简明易懂教程
2017/05/25 Python
Python用5行代码写一个自定义简单二维码
2018/10/21 Python
Python脚本利用adb进行手机控制的方法
2019/07/08 Python
mac使用python识别图形验证码功能
2020/01/10 Python
python实现低通滤波器代码
2020/02/26 Python
canvas像素画板的实现代码
2018/11/21 HTML / CSS
开办化妆品公司创业计划书
2013/12/26 职场文书
婚姻出轨保证书
2015/05/08 职场文书
魂断蓝桥观后感
2015/06/10 职场文书