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程序帮大家清理windows垃圾
Jan 15 Python
Python对象属性自动更新操作示例
Jun 15 Python
python将字符串以utf-8格式保存在txt文件中的方法
Oct 30 Python
python读取目录下所有的jpg文件,并显示第一张图片的示例
Jun 13 Python
Django REST framework 视图和路由详解
Jul 19 Python
Django logging配置及使用详解
Jul 23 Python
Python函数中的可变长参数详解
Sep 12 Python
Python CSV文件模块的使用案例分析
Dec 21 Python
django 实现简单的插入视频
Apr 07 Python
python文件排序的方法总结
Sep 13 Python
Python页面加载的等待方式总结
Feb 28 Python
python异常中else的实例用法
Jun 15 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
详解laravel安装使用Passport(Api认证)
2018/07/27 PHP
jquery异步循环获取功能实现代码
2010/09/19 Javascript
jqgrid 表格数据导出实例
2013/11/21 Javascript
jquery实现背景墙聚光灯效果示例分享
2014/03/02 Javascript
jQuery中的$.ajax()方法应用
2014/05/06 Javascript
比较常见的javascript中定义函数的区别
2015/11/09 Javascript
js实现各种复制到剪贴板的方法(分享)
2016/10/27 Javascript
详解微信小程序 template添加绑定事件
2017/06/23 Javascript
实例分析JS与Node.js中的事件循环
2017/12/12 Javascript
彻底理解js面向对象之继承
2018/02/04 Javascript
vue2.0 子组件改变props值,并向父组件传值的方法
2018/03/01 Javascript
解决vue的 v-for 循环中图片加载路径问题
2018/09/03 Javascript
vue中组件的过渡动画及实现代码
2018/11/21 Javascript
实现一个 Vue 吸顶锚点组件方法
2019/07/10 Javascript
在Vue中使用Echarts可视化库的完整步骤记录
2020/11/18 Vue.js
[06:37]2014DOTA2国际邀请赛 昔日王者渴望重回巅峰
2014/07/12 DOTA
python数据结构之二叉树的建立实例
2014/04/29 Python
Python安装模块的常见问题及解决方法
2018/02/05 Python
python画一个玫瑰和一个爱心
2020/08/18 Python
matplotlib实现区域颜色填充
2019/03/18 Python
python3 webp转gif格式的实现示例
2019/12/10 Python
Python3 hashlib密码散列算法原理详解
2020/03/30 Python
Python基于模块Paramiko实现SSHv2协议
2020/04/28 Python
Python+Selenium实现自动化的环境搭建的步骤(图文)
2020/09/01 Python
canvas裁剪clip()函数的具体使用
2018/03/01 HTML / CSS
2014年小学少先队工作总结
2014/12/18 职场文书
辞职书格式样本
2015/02/26 职场文书
2015年党日活动总结范文
2015/03/25 职场文书
开会迟到检讨书范文
2015/05/06 职场文书
运动会开幕式新闻稿
2015/07/17 职场文书
《钓鱼的启示》教学反思
2016/02/18 职场文书
《棉鞋里的阳光》教学反思
2016/02/20 职场文书
javaScript Array api梳理
2021/03/31 Javascript
Java并发编程之Executor接口的使用
2021/06/21 Java/Android
mysql定时自动备份数据库的方法步骤
2021/07/07 MySQL
GPU服务器的多用户配置方法
2022/07/07 Servers