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

时间:2022-12-24 14:00:45

前言

相信自动化测试的同学,对于另一个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的安装及常见问题解决

安装Playwright测试浏览器:

python -m playwright install

playwright install

以上命令如果执行成功,具体情况如下图:

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

该命令其实就是下载安装相关的浏览器文件,执行该命令的时候,如果你的电脑上安装了360,360会有风险提示,询问是否允许操作,选择允许所有操作即可,然后勾上不再提示,接着就等着下载安装完成即可使用.下载的文件目录如下图,每个浏览器都是独立的文件夹:

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

基本使用的命令如下:

完全无需一句代码即可实现自动化测试:使用chromium浏览器打开https://www.baidu.com

playwright codegen --target python -o open_baidu.py -b chromium https://www.baidu.com

执行以上命令会自动调用playwright的浏览器.会弹出两个窗口,一个是浏览器窗口,另一个窗口是你操做的记录,playwright会将你操作记录自动转化为Python代码

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

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

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

可能有如下提示,选择允许操作即可:

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

安装playwright常见的问题

1.当你的系统为win7时,执行​​playwright install​​可能会有如下提示:

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

原因是win7支持node的最高版本为13.14.0,而且我本地装的是13.9.0,但playwright要求node的版本必须高于14,且play下载的node是版本为16,这个时候我们就可以找到自己本地node的安装目录:把安装目录下的node.exe替换playwright目录里面的node.exe文件

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

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

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

以上两张图,第一张是我的node安装目录,第二张是playwright的安装目录(我使用的anaconda集成环境),替换完成后修改E:\Anaconda3\Lib\site-packages\playwright\driver\package\package.json文件(这个是我的安装目录,请根据你的具体情况修改对应的文件)

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

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

然后接着修改E:\Anaconda3\Lib\site-packages\playwright\driver\package\index.js文件(这个是我的安装目录,请根据你的具体情况修改对应的文件)的14改成比13或12,只要比14小就可以

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

然后接着继续执行​​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时对版本的检查

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

2.下载16版本的node安装包:​​https://nodejs.org/en/​

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

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

3.把下载下来的压缩文件进行解压,然后路径配置到path系统环境变量

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

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

4.然后保存,接着查看node的版本

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

5.如上图显示,说明node16.17.0安装成功.如果还是如下图提示版本过低,可重启你的电脑在尝试,再查看node16.17.0的是否安装成功,如果版本显示为v16.17.0,则为node新版本安装成功.可以继续执行​​playwright install​​进行playwright内置浏览器的安装,这时候就不会报版本过低的提示

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