当前位置: 首页 > news >正文

Web测试框架SeleniumBase

首先,SeleniumBase支持 pip安装:

> pip install seleniumbase

它依赖的库比较多,包括pytest、nose这些第三方单元测试框架,是为更方便的运行测试用例,因为这两个测试框架是支持unittest测试用例的执行的。

SeleniumBase还生成了“seleniumbase”命令,主要是为了方便我们安装浏览器驱动。

你可以通过下面的命令安装不同的浏览器驱动。

seleniumbase install chromedriverseleniumbase install geckodriverseleniumbase install edgedriverseleniumbase install iedriverseleniumbase install operadriver

在项目的examples/目录下面提供了丰富的例子。其中my_first_test.py如下:

from seleniumbase import BaseCaseclass MyTestClass(BaseCase):def test_basic(self):self.open("https://xkcd.com/353/")  self.assert_element('img[alt="Python"]')  self.click('a[rel="license"]')  self.assert_text("free to copy", "div center")  self.open("https://xkcd.com/1481/")title = self.get_attribute("#comic img", "title")  self.assert_true("86,400 seconds per day" in title)self.click("link=Blag")  self.assert_text("The blag of the webcomic", "h2")self.update_text("input#s", "Robots!\n")  self.assert_text("Hooray robots!", "#content")self.open("https://xkcd.com/1319/")self.assert_exact_text("Automation", "#ctitle")

如果你很熟悉Selenium的话,我想这些API对你来说并没什么难度。脚本中的元素定位默认使用的CSS。


接下来是脚本的执行,你可以使用pytest或nose,因为SeleniumBase已经帮你装好了:

> pytest my_first_test.py --browser=chrome> nosetests my_first_test.py --browser=firefox 

它还提供的有 ```—demo_mode``` 模式,使脚本执行的过程变得很慢,而且还会让操作的元素高亮显示,方便你查看和定位问题。

pytest my_first_test.py --demo_mode

在调试Selenium脚本的时候,我们希望错误时可以暂停脚本,那么可以加 ```--pdb -s``` 参数。

pytest my_first_test.py --pdb -s

 当脚本报错时是这样的:

上面的代码将使浏览器窗口保持打开状态,以防出现故障。你可以继续输入命令:
“c”:继续
“s”:步骤
“n”: 下一步


你还可以利用pytest 的 pytest-thml插件生成测试报告。

pytest test_suite.py --html=report.html

 当用例运行失败时自动截图!

其他就没什么亮点了,不过提供的API 非常丰富,而且作者非常积极的在维护项目。你可以在项目说明中查看,或者通过提供的examples/的例子来学习。

 总结:
感谢每一个认真阅读我文章的人!!!

 我个人整理了我这几年软件测试生涯整理的一些技术资料,包含:电子书,简历模块,各种工作模板,面试宝典,自学项目等。欢迎大家点击下方名片免费领取,千万不要错过哦。

 文档获取方式:

加入我的软件测试交流群:632880530免费获取~(同行大佬一起学术交流,每晚都有大佬直播分享技术知识点)

这份文档,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

以上均可以分享,只需要你搜索vx公众号:程序员雨果,即可免费领取

http://www.lryc.cn/news/192348.html

相关文章:

  • jvm打破砂锅问到底- 为什么要标记或记录跨代引用
  • 小程序长期订阅
  • Studio One6.5中文版本版下载及功能介绍
  • 07-Zookeeper分布式一致性协议ZAB源码剖析
  • 云原生安全应用场景有哪些?
  • Step 1 搭建一个简单的渲染框架
  • Excel 插入和提取超链接
  • 基础架构开发-操作系统、编译器、云原生、嵌入式、ic
  • C++-Mongoose(3)-http-server-https-restful
  • git多分支、git远程仓库、ssh方式连接远程仓库、协同开发(避免冲突)、解决协同冲突(多人在同一分支开发、 合并分支)
  • ChatGPT或将引发现代知识体系转变
  • 【爬虫实战】用pyhon爬百度故事会专栏
  • 焦炭反应性及反应后强度试验方法
  • 链表(3):双链表
  • 【TES720D】基于复旦微的FMQL20S400全国产化ARM核心模块
  • Python 列表切片陷阱:引用、复制与深复制
  • macbook电脑删除app怎么才能彻底清理?
  • 【数据结构】二叉树--链式结构的实现 (遍历)
  • reids基础数据结构
  • gitlab 维护
  • ABB机器人RWS连接方法
  • Spring Boot的循环依赖问题
  • postgresql|数据库|恢复备份的时候报错:pg_restore: implied data-only restore的处理方案
  • Elasticsearch:使用 Langchain 和 OpenAI 进行问答
  • 安全巡检管理系统—隐患排查治理
  • 第9期ThreadX视频教程:自制个微秒分辨率任务调度实现方案(2023-10-11)
  • C++ 11 lamdba表达式详解
  • Linux运行环境搭建系列-Zookeeper安装
  • vscode利用lauch.json和docker中的delve调试本地crdb
  • 【java|golang】多字段排序以及排序规则