自动化测试神器 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 库:
安装 Playwright 测试浏览器:
以上命令如果执行成功,具体情况如下图:
该命令其实就是下载安装相关的浏览器文件,执行该命令的时候,如果你的电脑上安装了 360,360 会有风险提示,询问是否允许操作,选择允许所有操作即可,然后勾上不再提示,接着就等着下载安装完成即可使用.下载的文件目录如下图,每个浏览器都是独立的文件夹:
基本使用的命令如下:
完全无需一句代码即可实现自动化测试:使用 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 内置浏览器的安装,这时候就不会报版本过低的提示
版权声明: 本文为 InfoQ 作者【迷彩】的原创文章。
原文链接:【http://xie.infoq.cn/article/211d5dee6d17459b78a1aa53d】。文章转载请联系作者。
评论