首页 > temp > python入门教程 >
-
pytest-pyppeteer:在pytest中运行pyppeteer
pytest-pyppeteer是我写的一个 pytest 插件,支持在 pytest 中运行pyppeteer,起因是为了解决工作中的一个测试需求,现在将其开源并做简单介绍。
背景
为什么不用 selenium?
最根本的原因是 selenium 的配置比较繁琐,最常见的问题是需要保持 webdriver 和浏览器版本的一致性。
pyppeteer 的简单介绍
pyppeteer 是 puppeteer的非官方 python 版本,几乎实现了和其相同的 API,可以非常方便的去操作 Chrome 浏览器。
pyppeteer 的局限性
目前最明显的问题是没有提供跨浏览器的解决方案,最新的 puppeteer 已经提供对 Firefox 的支持,但是 pyppeteer 可能还需要一些时间。
安装
推荐使用pipenv管理虚拟环境,并替换为国内 pip 源。
仅支持 python >= 3.7
快速开始
用下面这个测试用例来说明:断言电影《活着》的豆瓣评分大于 9.0。
执行测试用例,看一下效果:
这里我们无需指定浏览器的路径,pytest-pyppeteer 会在对应平台默认的安装路径下搜寻 Chrome 的可执行文件。
也可以通过 --executable-path
命令行选项显示的指定 Chrome 的路径。
或者,在你的conftest.py
文件中指定:
其它支持的命令行选项,包括:
-
--headless
:使用浏览器的无头模式; -
--args
:为浏览器指定其它参数。例如:指定代理服务器: -
--window-size
:指定浏览器的大小,默认是 800*600;--window-size 0 0
表示最大化浏览器;
同时操作多个浏览器
用下面这个测试用例来说明:断言书籍《活着》的豆瓣评分高于其电影的评分。
通过pyppeteer_factory
可以获取多个浏览器实例,再利用 python 标准库asyncio
可以很方便的执行异步操作,节省时间。
执行测试用例,看一下效果:
Github 仓库
更多功能可以访问:https://github.com/luizyao/pytest-pyppeteer,如果能帮助到你的话,可以给个 star,也欢迎提 issue 和 pr。
pytest 中文文档(v6.1.1)
之前翻译过 pytest v5.1.3 的官方文档并开源,目前计划更新到 v6.1.1 版本。
项目更多进度可以访问:https://github.com/luizyao/pytest-chinese-doc/tree/6.1.1
__EOF__