webdriver-helper又出新版:可精简selenium的错误信息

这篇具有很好参考价值的文章主要介绍了webdriver-helper又出新版:可精简selenium的错误信息。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. selenium冗长的错误提示

在selenium的使用过程中,会出现很多没有的信息,这些信息让控制台和日志文件的可读性降低了很多

比如chrome在运行过程中会时不时地出现这样地内容

DevTools listening on ws://127.0.0.1:50856/devtools/browser/a9396af4-3146-4164-96ba-208a966affbc
 [24412:18772:0617/090708:ERROR:ssl_client_socket_openssl.cc(1158)] handshake failed; returned -1, SSL error code 1, net_error -100
 [9848:10684:1201/013233.169:ERROR:device_event_log_impl.cc(211)] [01:32:33.170] USB: usb_device_handle_win.cc:1020 Failed to read descriptor from node connection: A device attached to the system is not functioning. (0x1F)
 [9848:10684:1201/013233.169:ERROR:device_event_log_impl.cc(211)] [01:32:33.170] USB: usb_device_handle_win.cc:1020 Failed to read descriptor from node connection: A device attached to the system is not functioning. (0x1F)

像这样地内容已经在之前的版本精简掉了,

如果是使用webdriver-helper启动selenium的话,应该很久都没看到这些了。

这里只是为没有使用webdriver-helper的朋友说明一下

还有一部分内容,就是selenium的错误提示,非常的冗长

以一个最简单的代码为例,下面这个代码会再定位元素时失败

 from selenium.webdriver.common.by import By
 from webdriver_helper import get_webdriver
 ​
 driver = get_webdriver() # 启动浏览器
 ​
 driver.get("http://baidu.com")
 driver.find_element(By.ID, "sanmu") # 元素定位失败

Chrome的错误如下

webdriver-helper,selenium,selenium,firefox,chrome

firefox的会稍微少一些,但一样烦琐

webdriver-helper,selenium,selenium,firefox,chrome

不管是chrome还是firefox,selenium报错时大部分的错误提示都是无用的,对我们来说真正价值的只有两行

  1. 哪一行代码引发错误? 在这个例子中是定位元素

     driver.find_element(By.ID, "sanmu")
  2. 引发了什么错误?在这个例子中是元素不存在

     selenium.common.exceptions.NoSuchElementException: 
         Message: no such element: Unable to locate element: 
         {"method":"css selector","selector":"[id="sanmu"]"}

如果能够精简一下,不论是在控制台,还是在日志文件中,都可以极大的提高可读性

应粉丝要求,在webdriver_helper==2.3.1 中实现了这部分功能

2. webdriver-helper的精简效果

安装2.3.1及以上版本的webdriver_helper,同样的代码,提示是这样的

webdriver-helper,selenium,selenium,firefox,chrome

由图可知,优化后的错误提示,非常的短小、精悍,同时充分的展示了出错的位置、原因

3. 认识selenium中的错误提示

在python中,报错这个东西在专业术语上称为“异常”,

而上异常也分很多种,比如断言异常、文件异常、权限异常等等

在selenium中也定义了自用异常,比如元素定位失败时的NoSuchElementException异常,就是selenium自己定义的

它和selenium中的其他异常一样,都属于同一个父类:WebDriverException

其源码如下

 
class WebDriverException(Exception):
 ​
     def __init__(
         self, msg: Optional[str] = None, screen: Optional[str] = None, stacktrace: Optional[Sequence[str]] = None
     ) -> None:
         super().__init__()
         self.msg = msg
         self.screen = screen
         self.stacktrace = stacktrace
 ​
     def __str__(self) -> str:
         exception_msg = f"Message: {self.msg}\n"
         if self.screen:
             exception_msg += "Screenshot: available via screen\n"
         if self.stacktrace:
             stacktrace = "\n".join(self.stacktrace)
             exception_msg += f"Stacktrace:\n{stacktrace}"
         return exception_msg

简单来说,selenium的异常就是接收msg, screen, stacktrace,三个参数,再将他们拼接在一起,构成完整的错误提示

4. 其他改进

优化了pycharm的代码提示和自动补全,例如:

webdriver-helper,selenium,selenium,firefox,chrome

webdriver-helper系本人原创,欢迎关注文章来源地址https://www.toymoban.com/news/detail-834023.html

到了这里,关于webdriver-helper又出新版:可精简selenium的错误信息的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • selenium和webdriver

    Selenium是一个Web的自动化测试工具,最初是为网站自动化测试而开发的,Selenium可以直接调用浏览器,它支持所有主流的浏览器。我们可以使用selenium很容易完成之前编写的爬虫。 webdriver 可以理解它是浏览器的驱动。 selenium本质是通过驱动浏览器,完全模拟浏览器的操作,比

    2024年02月09日
    浏览(45)
  • Selenium - 自动下载 webdriver

    背景 很多浏览器会自动更新,但是 driver 不会自动更新。为了确保 driver 版本和浏览器匹配,可以使用第三方库 webdriver_manager 代码 这个文件里封装了几个函数 driver_seek : 根据给定的目录,和文件名称,查找该目录下是否有这个文件 driver_download : 下载 webdriver 到指定目录,如果

    2024年02月06日
    浏览(59)
  • Selenium WebDriver 开发实战

    WebDriver提供的一系列对象定位方法,获取元素,实现测试用例。现在我们先来写一些调试代码,看看是否能成功驱动浏览器执行操作。 各行代码的作用分别如下: 之前已经安装了Selenium,第1行用于从Selenium库中导入webdriver模块。Selenium库中有common和webdriver两个模块,common模块

    2024年01月17日
    浏览(43)
  • Selenium/webdriver原理解析

     最近在看一些底层的东西。driver翻译过来是驱动,司机的意思。如果将webdriver比做成司机,竟然非常恰当。 我们可以把WebDriver驱动 浏览器 类比成出租车司机开出租车。在开出租车时有三个角色: · 乘客:他/她告诉出租车司机去哪里,大概怎么走。 · 出租车司机:他按照

    2024年02月14日
    浏览(51)
  • Python + Selenium WebDriver

    Python + Selenium WebDriver 一、搭建环境步骤 1、安装 python3.x (windows xp 不支持 python3.5+) 2、设置环境变量 path(安装时候也可以解决 勾上 add python.ext to path) 3、安装Selenium 用pip命令安装 pip install -U selenium 4、路径,pip可能定位不到,pip也可能定位到别的文件夹(perl) 方案:cd

    2024年02月12日
    浏览(46)
  • selenium+webdriver爬虫技术

    百度百科Selenium时,头一段文字介绍了selenium的主要作用和特点:selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera等。这个工具的主要功能包括:

    2024年02月13日
    浏览(89)
  • 【精简操作】Mathtype安装出现错误“53”/未找到.wll文件/选项卡灰色等问题

    当电脑安装Mathtype时,打开office相关软件会出现以下一些问题: 1、确保_office软件的安装位置中 STARTUP文件夹 为office可信任位置; 2、在word选项卡中查看加载项,确认Mathtype所在位置(正常情况下也就是office软件安装位置下的STARTUP文件夹,同上); 3、【关键】将安装解压后的

    2024年02月04日
    浏览(50)
  • Java Selenium WebDriver 网页填报

    1.安装chrome浏览器 在“关于chrome”界面,查看浏览器版本号 2.下载chromeDriver 在https://registry.npmmirror.com/binary.html?path=chromedriver/下载对应版本的驱动(如果浏览器版本过新,建议下载最接近的版本)。 将下载好的压缩包解压缩,记住chromedriver.exe文件的路径(路径中不要包含中文

    2024年02月14日
    浏览(39)
  • Selenium:WebDriver简介及元素定位

    一、WebDriver原理 二、WebDriver定位方法 三、WebElement接口常用方法 1、关于WebDriver 设计模式:按照Server-Client的经典设计模式设计; Server端:即Remote Server(远程服务器),可以是任意的浏览器,当脚本启动浏览器时,该浏览器就是Remote Server,它的职责是等待Client发送请求并做出

    2024年02月01日
    浏览(49)
  • Selenium WebDriver基本知识点

    2024软件测试面试刷题,这个小程序(永久刷题),靠它快速找到工作了!(刷题APP的天花板)_软件测试刷题小程序-CSDN博客 文章浏览阅读2.8k次,点赞85次,收藏12次。你知不知道有这么一个软件测试面试的刷题小程序。里面包含了面试常问的软件测试基础题,web自动化测试、

    2024年04月14日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包