背景
工作是这样的,由于工作的重复率太高,我不得不开发一些脚本来 摸鱼 提高工作效率
但是问题是这样的
我在的单位内外网是阻隔的,我所在的分支机构没有开发人员,总部有研制中心,但是并不会理会咱们这些分支机构
内网的npm
私有库有一个很老的playwright@1.23.4
版别,而我的脚本需求用到一些比较新的特性
我拥有的设备
内网机:
统信UOS(主要跑脚本的机子)
Windows10(工作常用)
外网机:
Windows11
自己的设备:
MacOS(Intel版)
而不同版别的playwright
依靠的webdriver
又不相同
而我集齐了windows
,mac
,linux
三种设备。。。
这就意味着我不太好下载对应版别的ms-playwright
(总不能为了下载对应的webdriver
去装个虚拟机吧)
1.承认webdriver
放置的方位
管理浏览器二进制文件
2.怎么获取不同体系的webdriver
首先,咱们需求知道下载那些浏览器,以及这些浏览器的版别号和包名
需求安装的浏览器
咱们能够通过
npx playwright install --help
或
pnpm dlx playwright install --help
检查能够安装的浏览器和版别
2.1 怎么确定要安装哪些浏览器
其实这个要看你自己,由于在启动的代码有channel
指定需求用的浏览器
const browser = await chromium.launch({
headless: false,
// 运用edge浏览器
channel: 'msedge',
// 敞开控制台。不然无法自动播放视频
devtools: true,
args: ["--start-maximized",]
});
一般是引荐下载chromium
firefox
webkit
这三个,基本能掩盖需求。
当然假如你不需求其间的某个,也能够不下载,实测是不会影响代码运转的。
2.2 确定当时playwright
依靠的webdriver
版别号
pnpm dlx playwright@version install webdriver
这儿我以当时最新版别1.37.1
下载chromium
举例
pnpm dlx playwright@1.37.1 install chromium
或许看不太清,我复制出来
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
的遍历打印,即可打印出一切的下载途径
// 打印一切下载途径
this._executables.forEach((item)=>{
console.log(item.downloadURLs?.[0]);
})
然后用vscode
启动当时这个index
文件
清楚明了,一切的下载途径都被打印出来了
但是问题来了,我这都是当时体系的,其他体系的呢?
2.3.2 体系判别hostPlatform
地址:lib/utils/hostPlatform
体系判别都在这儿,只保存自己需求的体系,注视掉其他的,从头运转即可。
例如我需求linux
的
从头运转
能够看到,途径都变成linux
的了
别的要注意芯片架构,arm的和非arm的自行注意哈
总结
最终总结一下各个版别或许需求的途径和包名,版别自行替换哈
域名可替换
'https://playwright.azureedge.net'
'https://playwright-akamai.azureedge.net'
'https://playwright-verizon.azureedge.net'
windows
https://playwright.azureedge.net/builds/chromium/1076/chromium-win64.zip
https://playwright.azureedge.net/builds/chromium/1076/chromium-with-symbols-win64.zip
https://playwright.azureedge.net/builds/chromium-tip-of-tree/1136/chromium-tip-of-tree-win64.zip
https://playwright.azureedge.net/builds/firefox/1422/firefox-win64.zip
https://playwright.azureedge.net/builds/firefox-beta/1422/firefox-beta-win64.zip
https://playwright.azureedge.net/builds/webkit/1883/webkit-win64.zip
https://playwright.azureedge.net/builds/ffmpeg/1009/ffmpeg-win64.zip
https://playwright.azureedge.net/builds/android/1000/android.zip
mac(Intel)
https://playwright.azureedge.net/builds/chromium/1076/chromium-mac.zip
https://playwright.azureedge.net/builds/chromium/1076/chromium-with-symbols-mac.zip
https://playwright.azureedge.net/builds/chromium-tip-of-tree/1136/chromium-tip-of-tree-mac.zip
https://playwright.azureedge.net/builds/firefox/1422/firefox-mac-13.zip
https://playwright.azureedge.net/builds/firefox/1422/firefox-asan-mac-13.zip
https://playwright.azureedge.net/builds/firefox-beta/1422/firefox-beta-mac-13.zip
https://playwright.azureedge.net/builds/webkit/1883/webkit-mac-13.zip
https://playwright.azureedge.net/builds/ffmpeg/1009/ffmpeg-mac.zip
https://playwright.azureedge.net/builds/android/1000/android.zip
linux
https://playwright.azureedge.net/builds/chromium/1076/chromium-linux.zip
https://playwright.azureedge.net/builds/chromium/1076/chromium-with-symbols-linux.zip
https://playwright.azureedge.net/builds/chromium-tip-of-tree/1136/chromium-tip-of-tree-linux.zip
https://playwright.azureedge.net/builds/firefox/1422/firefox-ubuntu-20.04.zip
https://playwright.azureedge.net/builds/firefox/1422/firefox-asan-ubuntu-20.04.zip
https://playwright.azureedge.net/builds/firefox-beta/1422/firefox-beta-ubuntu-20.04.zip
https://playwright.azureedge.net/builds/webkit/1883/webkit-ubuntu-20.04.zip
https://playwright.azureedge.net/builds/ffmpeg/1009/ffmpeg-linux.zip
https://playwright.azureedge.net/builds/android/1000/android.zip