自动化测试神器playwright的安装及常见问题解决
前言
相信自动化测试的同学,对于另一个Python自动化测试神器selenium并不陌生,在playwright出现之前,selenium是自动化测试最常用的Python库,他支持多平台:windows、linux、MAC ,且支持多浏览器:ie、ff、safari、opera、chrome,以及支持多语言:如:C、 java、ruby、python、或是C#等。
直到2021年微软开源了一个项目:playwright-python,Playwright 是针对 Python 语言的纯自动化工具,一个用于 Web 测试和自动化的框架。它可以通过单个API自动执行 Chromium,Firefox 和 WebKit 浏览器,同时支持以无头模式、有头模式运行。
playwright官方文档:https://playwright.dev/docs/intro
playwright GitHub地址:https://github.com/microsoft/playwright
playwright一推出,selenium遭到前所未有的挑战,Playwright 旨在实现常绿、强大、可靠和快速的跨浏览器 Web 自动化。playwright基本特点如下:
支持浏览器端的录制,生成自动化脚本,支持无头跑脚本
速度快,基本是selenium的好几倍,且支持浏览器异步运行
自动等待API,可拦截请求,随意mock
Playwright Test 是专门为满足端到端测试的需求而创建的。Playwright和selenium一样,同样支持所有现代渲染引擎,包括 Chromium、WebKit 和 Firefox。支持在 Windows、Linux 和 macOS 上进行本地或 CI 测试,无头或使用适用于 Android 和 Mobile Safari 的 Google Chrome 的本机移动仿真进行测试。
playwright特性总结
1、支持所有主流浏览器
支持所有主流浏览器:基于Chromium内核的Google Chrome 和 Microsoft Edge浏览器), WebKit内核的Apple Safari 和 Mozilla Firefox浏览器,不支持IE11。
跨平台:Windows、Linux 和macOS
可用于模拟移动端WEB应用的测试,不支持在真机上测试。
支持无头模式(默认)和有头模式
2、快速可靠的执行
自动等待元素
Playwright基于Websocket协议,可以接受浏览器(服务端)的信号。selenium采用的是HTTP协议,只能客户端发起请求。
浏览器上下文并行:单个浏览器实例下创建多个浏览器上下文,每个浏览器上下文可以处理多个页面。
有弹性的元素选择:可以使用文本、可访问标签选择元素。
3、强大的自动化能力
playwright是一个进程外自动化驱动程序,它不受页面内JavaScript执行范围的限制,可以自动化控制多个页面。
强大的网络控制:Playwright 引入了上下文范围的网络拦截来存根和模拟网络请求。
现代web特性:支持Shadow DOM选择,元素位置定位,页面提示处理,Web Worker等Web API。
覆盖所有场景:支持文件下载、上传、OOPIF(out-of-process iframes),输入、点击,暗黑模式等。
安装Playwright
Playwright的安装非常简单,跟Python其他库的安装一样.
Playwright搭建命令如下:
安装playwright库:
pip install playwright
安装Playwright测试浏览器:
python -m playwright install
或
playwright install
以上命令如果执行成功,具体情况如下图:
该命令其实就是下载安装相关的浏览器文件,执行该命令的时候,如果你的电脑上安装了360,360会有风险提示,询问是否允许操作,选择允许所有操作即可,然后勾上不再提示,接着就等着下载安装完成即可使用.下载的文件目录如下图,每个浏览器都是独立的文件夹:
基本使用的命令如下:
完全无需一句代码即可实现自动化测试:使用chromium浏览器打开https://www.baidu.com
playwright codegen --target python -o open_baidu.py -b chromium https://www.baidu.com
执行以上命令会自动调用playwright的浏览器.会弹出两个窗口,一个是浏览器窗口,另一个窗口是你操做的记录,playwright会将你操作记录自动转化为Python代码
可能有如下提示,选择允许操作即可:
安装playwright常见的问题
1.当你的系统为win7时,执行playwright install
可能会有如下提示:
原因是win7支持node的最高版本为13.14.0,而且我本地装的是13.9.0,但playwright要求node的版本必须高于14,且play下载的node是版本为16,这个时候我们就可以找到自己本地node的安装目录:把安装目录下的node.exe替换playwright目录里面的node.exe文件
以上两张图,第一张是我的node安装目录,第二张是playwright的安装目录(我使用的anaconda集成环境),替换完成后修改E:\Anaconda3\Lib\site-packages\playwright\driver\package\package.json文件(这个是我的安装目录,请根据你的具体情况修改对应的文件)
然后接着修改E:\Anaconda3\Lib\site-packages\playwright\driver\package\index.js文件(这个是我的安装目录,请根据你的具体情况修改对应的文件)的14改成比13或12,只要比14小就可以
然后接着继续执行playwright install
命令即可成功安装浏览器
2.如果上面的方法无法解决你的问题,你还可以安装低版本的playwright
playwright的版本问题,win7最高支持1.15.3。因此,安装playwright依赖库应指定版本,不能装最新版。pip install playwright==1.15.3下一步就能成功安装Chromium、Firefox、WebKit等浏览器的驱动文件(内置浏览器)python -m playwright install
3.终极解决方法
1.既然是因为node版本过低,不能成功安装playwright的内置浏览器,那就想办法安装高版本的node。这才是一劳永逸的做法.
首先修改环境变量,新建一项变量名为NODE_SKIP_PLATFORM_CHECK,变量值为1的系统环境变量.设置这个是跳过安装node时对版本的检查
2.下载16版本的node安装包:https://nodejs.org/en/
3.把下载下来的压缩文件进行解压,然后路径配置到path系统环境变量
4.然后保存,接着查看node的版本
5.如上图显示,说明node16.17.0安装成功.如果还是如下图提示版本过低,可重启你的电脑在尝试,再查看node16.17.0的是否安装成功,如果版本显示为v16.17.0,则为node新版本安装成功.可以继续执行playwright install
进行playwright内置浏览器的安装,这时候就不会报版本过低的提示
- 点赞
- 收藏
- 关注作者
评论(0)