背景
事情是这样的,因为工作的重复率太高,我不得不开发一些脚本来 摸鱼 提高工作效率
但是问题是这样的
我在的单位内外网是隔离的,我所在的分支机构没有开发人员,总部有研发中心,但是并不会理会我们这些分支机构
内网的npm
私有库有一个很老的playwright@1.23.4
版本,而我的脚本需要用到一些比较新的特性
我拥有的设备
1 | 内网机: |
而不同版本的playwright
依赖的webdriver
又不一样
而我集齐了windows
,mac
,linux
三种设备。。。
这就意味着我不太好下载对应版本的ms-playwright
(总不能为了下载对应的webdriver
去装个虚拟机吧)
1.确认webdriver
放置的位置
2.如何获取不同系统的webdriver
首先,我们需要知道下载那些浏览器,以及这些浏览器的版本号和包名
我们可以通过npx playwright install --help
或pnpm dlx playwright install --help
查看可以安装的浏览器和版本
2.1 如何确定要安装哪些浏览器
其实这个要看你自己,因为在启动的代码有channel
指定需要用的浏览器
1 | const browser = await chromium.launch({ |
一般是推荐下载chromium
firefox
webkit
这三个,基本能覆盖需求。
当然如果你不需要其中的某个,也可以不下载,实测是不会影响代码运行的。
2.2 确定当前playwright
依赖的webdriver
版本号
1 | pnpm dlx playwright@version install webdriver |
这里我以当前最新版本1.37.1
下载chromium
举例
1 | pnpm dlx playwright@1.37.1 install chromium |
可能看不太清,我复制出来
1 | https://playwright.azureedge.net/builds/chromium/1076/chromium-mac.zip |
可以通过这种方式,了解当前playwright
依赖的webdriver
版本,例如我这个就是1076
那么我只要下载对应的链接解压到ms-playwright
即可
2.3 那么如何下载其他系统需要的webdriver
呢?
除了用相关的系统以外,我们还可以通过查看源码的方式去确认其他系统的下载路径
源码地址:Github.playwright
文件路径:playwright/packages/playwright-core/src/server/registry/index.ts
这里就是我们下载的各种webdriver
路径了
我们可以看到,各种系统,还有各种版本
这时候可能还是不知道怎么查看,怎么办?
那我们可以先新建一个项目,然后下载playwright
作为依赖
在node_modules
里面找到playwright-core
,单独将它打开
这里因为我用的是pnpm
,路径都是link
的,所以我需要找到原项目
并用vscode
打开它
我们直接访问playwright-core/src/server/registry/index.ts
前面的解析过程比较无聊,无非是找关键字,判断系统啊,下载路径拼接之类的,我这里就直接跳过,只点出几个关键的地方
2.3.1 构造函数
关键在Registry
的构造函数里
其中有一个_executables
所有最后构造出来的下载路径都被push到_executables
中了
因此我们到构造函数的末尾,添加一下_executables
的遍历打印,即可打印出所有的下载路径
1 | // 打印所有下载路径 |
然后用vscode
启动当前这个index
文件
显而易见,所有的下载路径都被打印出来了
但是问题来了,我这都是当前系统的,其他系统的呢?
2.3.2 系统判断hostPlatform
地址:lib/utils/hostPlatform
系统判断都在这里,只保留自己需要的系统,注视掉其他的,重新运行即可。
例如我需要linux
的
重新运行
可以看到,路径都变成linux
的了
另外要注意芯片架构,arm的和非arm的自行注意哈
总结
最后总结一下各个版本可能需要的路径和包名,版本自行替换哈
域名可替换
1 | 'https://playwright.azureedge.net' |
windows
1 | https://playwright.azureedge.net/builds/chromium/1076/chromium-win64.zip |
mac(Intel)
1 | https://playwright.azureedge.net/builds/chromium/1076/chromium-mac.zip |
linux
1 | https://playwright.azureedge.net/builds/chromium/1076/chromium-linux.zip |
阿星在这为大家提供一些版本依赖的下载地址
记得下载完成的标记为touch INSTALLATION_COMPLETE
哦
1 | # 1.46.0 |