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中ConfigParse模块的用法
Sep 29 Python
Python入门篇之面向对象
Oct 20 Python
在Python中使用base64模块处理字符编码的教程
Apr 28 Python
python获取局域网占带宽最大3个ip的方法
Jul 09 Python
Python黑魔法@property装饰器的使用技巧解析
Jun 16 Python
遗传算法python版
Mar 19 Python
使用python3+xlrd解析Excel的实例
May 04 Python
python使用scrapy发送post请求的坑
Sep 04 Python
用python脚本24小时刷浏览器的访问量方法
Dec 07 Python
python获取交互式ssh shell的方法
Feb 14 Python
python匿名函数的使用方法解析
Oct 10 Python
Python利用Scrapy框架爬取豆瓣电影示例
Jan 17 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 数组的指针操作实现代码
2011/02/08 PHP
php 字符串替换的方法
2012/01/10 PHP
php合并数组中相同元素的方法
2014/11/13 PHP
Laravel 5.4.36中session没有保存成功问题的解决
2018/02/19 PHP
超简单的jquery的AJAX用法
2010/05/10 Javascript
关于用Jquery的height()、width()计算动态插入的IMG标签的宽高的问题
2010/12/08 Javascript
30个让人兴奋的视差滚动(Parallax Scrolling)效果网站
2012/03/04 Javascript
Jquery getJSON方法详细分析
2013/12/26 Javascript
jQuery中fadeOut()方法用法实例
2014/12/24 Javascript
js使用onmousemove和onmouseout获取鼠标坐标的方法
2015/03/31 Javascript
JQuery EasyUI学习教程之datagrid 添加、修改、删除操作
2016/07/09 Javascript
总结Javascript中的隐式类型转换
2016/08/24 Javascript
ES6 javascript中class静态方法、属性与实例属性用法示例
2017/10/30 Javascript
JS运动特效之完美运动框架实例分析
2018/01/24 Javascript
vue+express 构建后台管理系统的示例代码
2018/07/19 Javascript
基于jQuery的时间戳与日期间的转化
2019/06/21 jQuery
p5.js实现故宫橘猫赏秋图动画
2019/10/23 Javascript
element-ui 实现响应式导航栏的示例代码
2020/05/08 Javascript
[03:12]完美世界DOTA2联赛PWL DAY6集锦
2020/11/05 DOTA
用Python实现命令行闹钟脚本实例
2016/09/05 Python
python之文件读取一行一行的方法
2018/07/12 Python
pandas 根据列的值选取所有行的示例
2018/11/07 Python
Python爬取数据保存为Json格式的代码示例
2019/04/09 Python
Django实现发送邮件功能
2019/07/18 Python
Python调用jar包方法实现过程解析
2020/08/11 Python
python 如何设置守护进程
2020/10/29 Python
Django haystack实现全文搜索代码示例
2020/11/28 Python
python实现简单猜单词游戏
2020/12/24 Python
CSS3属性选择符介绍
2008/10/17 HTML / CSS
英国领先的游戏零售商:GAME
2019/09/24 全球购物
转让协议书范本
2014/04/15 职场文书
乡镇四风对照检查材料
2014/08/31 职场文书
幼儿园大班教师评语
2019/06/21 职场文书
浅谈Python基础之列表那些事儿
2021/05/11 Python
Python3中最常用的5种线程锁实例总结
2021/07/07 Python
零基础学java之循环语句的使用
2022/04/10 Java/Android