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 图片验证码代码
Dec 07 Python
详解Python中find()方法的使用
May 18 Python
Python中使用不同编码读写txt文件详解
May 28 Python
使用Python3+PyQT5+Pyserial 实现简单的串口工具方法
Feb 13 Python
python 定时器,轮询定时器的实例
Feb 20 Python
详解python tkinter教程-事件绑定
Mar 28 Python
Python可变和不可变、类的私有属性实例分析
May 31 Python
Python 堆叠柱状图绘制方法
Jul 29 Python
Python编程学习之如何判断3个数的大小
Aug 07 Python
详解Python实现进度条的4种方式
Jan 15 Python
jupyter notebook tensorflow打印device信息实例
Apr 20 Python
Python 中由 yield 实现异步操作
May 04 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中的使用curl发送请求(GET请求和POST请求)
2017/02/08 PHP
asp.net中System.Timers.Timer的使用方法
2013/03/20 Javascript
javascript实现加载xml文件的方法
2015/11/24 Javascript
jQuery实现ajax的叠加和停止(终止ajax请求)
2016/08/08 Javascript
vue分页组件table-pagebar使用实例解析
2020/11/15 Javascript
轻松理解Javascript变量的相关问题
2017/01/20 Javascript
深入浅析Vue中的Prop
2018/06/10 Javascript
jQuery实现的淡入淡出图片轮播效果示例
2018/08/29 jQuery
使用 Vue cli 3.0 构建自定义组件库的方法
2019/04/30 Javascript
小程序按钮避免多次调用接口和点击方案实现(不用showLoading)
2020/04/15 Javascript
[01:08:43]DOTA2-DPC中国联赛定级赛 Phoenix vs DLG BO3第一场 1月9日
2021/03/11 DOTA
Python 条件判断的缩写方法
2008/09/06 Python
python通过索引遍历列表的方法
2015/05/04 Python
Python实现的双色球生成功能示例
2017/12/18 Python
python中时间、日期、时间戳的转换的实现方法
2019/07/06 Python
Python使用微信itchat接口实现查看自己微信的信息功能详解
2019/08/22 Python
python连接PostgreSQL数据库的过程详解
2019/09/18 Python
keras.layer.input()用法说明
2020/06/16 Python
在python中对于bool布尔值的取反操作
2020/12/11 Python
css3发光搜索表单分享
2014/04/11 HTML / CSS
CSS3 重置iphone浏览器按钮input,select等表单元素的默认样式
2014/10/11 HTML / CSS
浅谈html5与APP混合开发遇到的问题总结
2018/03/20 HTML / CSS
奥地利体育网上商店:Gigasport
2019/10/09 全球购物
自荐信怎么写好
2013/11/11 职场文书
仓库理货员岗位职责
2013/12/18 职场文书
大学生见习期满自我鉴定
2014/09/13 职场文书
党的群众路线教育实践活动个人整改落实情况汇报
2014/10/28 职场文书
团组织推优材料
2014/12/29 职场文书
会计试用期自我评价
2015/03/10 职场文书
2015年环境监察工作总结
2015/07/23 职场文书
2019学校请假条格式及范文
2019/06/25 职场文书
vue使用节流函数的踩坑实例指南
2021/05/20 Vue.js
浅谈Java父子类加载顺序
2021/08/04 Java/Android
Go归并排序算法的实现方法
2022/04/06 Golang
Python闭包的定义和使用方法
2022/04/11 Python
Python使用永中文档转换服务
2022/05/06 Python