写点什么

自动化测试神器 playwright 的安装及常见问题解决

作者:迷彩
  • 2022 年 9 月 23 日
    广东
  • 本文字数:2297 字

    阅读完需:约 8 分钟

前言


相信自动化测试的同学,对于另一个 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 基本特点如下:

  1. 支持浏览器端的录制,生成自动化脚本,支持无头跑脚本

  2. 速度快,基本是 selenium 的好几倍,且支持浏览器异步运行

  3. 自动等待 API,可拦截请求,随意 mock


Playwright Test 是专门为满足端到端测试的需求而创建的。Playwright 和 selenium 一样,同样支持所有现代渲染引擎,包括 Chromium、WebKit 和 Firefox。支持在 Windows、Linux 和 macOS 上进行本地或 CI 测试,无头或使用适用于 Android 和 Mobile Safari 的 Google Chrome 的本机移动仿真进行测试。

playwright 特性总结

1、支持所有主流浏览器


  1. 支持所有主流浏览器:基于 Chromium 内核的 Google Chrome 和 Microsoft Edge 浏览器), WebKit 内核的 Apple Safari 和 Mozilla Firefox 浏览器,不支持 IE11。

  2. 跨平台:Windows、Linux 和 macOS

  3. 可用于模拟移动端 WEB 应用的测试,不支持在真机上测试。

  4. 支持无头模式(默认)和有头模式

2、快速可靠的执行


  1. 自动等待元素

  2. Playwright 基于 Websocket 协议,可以接受浏览器(服务端)的信号。selenium 采用的是 HTTP 协议,只能客户端发起请求。

  3. 浏览器上下文并行:单个浏览器实例下创建多个浏览器上下文,每个浏览器上下文可以处理多个页面。

  4. 有弹性的元素选择:可以使用文本、可访问标签选择元素。

3、强大的自动化能力


  1. playwright 是一个进程外自动化驱动程序,它不受页面内 JavaScript 执行范围的限制,可以自动化控制多个页面。

  2. 强大的网络控制:Playwright 引入了上下文范围的网络拦截来存根和模拟网络请求。

  3. 现代 web 特性:支持 Shadow DOM 选择,元素位置定位,页面提示处理,Web Worker 等 Web API。

  4. 覆盖所有场景:支持文件下载、上传、OOPIF(out-of-process iframes),输入、点击,暗黑模式等。

安装 Playwright

Playwright 的安装非常简单,跟 Python 其他库的安装一样.

Playwright 搭建命令如下:

安装 playwright 库:

pip install playwright
复制代码


安装 Playwright 测试浏览器:

python -m playwright installplaywright 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 内置浏览器的安装,这时候就不会报版本过低的提示


发布于: 2022 年 09 月 23 日阅读数: 43
用户头像

迷彩

关注

我的工作是常年写bug|公众号:编程架构之美 2020.06.18 加入

修bug的菜鸟~公众号:“互联网有啥事”已改名为“编程架构之美”

评论

发布
暂无评论
自动化测试神器playwright的安装及常见问题解决_playwright_迷彩_InfoQ写作社区