背景

工作是这样的,由于工作的重复率太高,我不得不开发一些脚本来 摸鱼 提高工作效率

但是问题是这样的

我在的单位内外网是阻隔的,我所在的分支机构没有开发人员,总部有研制中心,但是并不会理会咱们这些分支机构

内网的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 --helppnpm 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

无星的自动化之旅(四)—— PlayWright内网升级ms-playwright

或许看不太清,我复制出来

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内网升级ms-playwright

咱们能够看到,各种体系,还有各种版别

这时候或许还是不知道怎么检查,怎么办?

那咱们能够先新建一个项目,然后下载playwright作为依靠

node_modules里面找到playwright-core,单独将它打开

这儿由于我用的是pnpm,途径都是link的,所以我需求找到原项目

无星的自动化之旅(四)—— PlayWright内网升级ms-playwright

无星的自动化之旅(四)—— PlayWright内网升级ms-playwright

无星的自动化之旅(四)—— PlayWright内网升级ms-playwright

无星的自动化之旅(四)—— PlayWright内网升级ms-playwright

并用vscode打开它

无星的自动化之旅(四)—— PlayWright内网升级ms-playwright

咱们直接访问playwright-core/src/server/registry/index.ts

前面的解析进程比较无聊,无非是找关键字,判别体系啊,下载途径拼接之类的,我这儿就直接跳过,只点出几个关键的当地

2.3.1 结构函数

无星的自动化之旅(四)—— PlayWright内网升级ms-playwright
关键在Registry的结构函数里

其间有一个_executables

一切最终结构出来的下载途径都被push到_executables中了

因此咱们到结构函数的结尾,添加一下_executables遍历打印,即可打印出一切的下载途径

 // 打印一切下载途径
    this._executables.forEach((item)=>{
      console.log(item.downloadURLs?.[0]);
    })

然后用vscode启动当时这个index文件

无星的自动化之旅(四)—— PlayWright内网升级ms-playwright

无星的自动化之旅(四)—— PlayWright内网升级ms-playwright
清楚明了,一切的下载途径都被打印出来了

但是问题来了,我这都是当时体系的,其他体系的呢?

2.3.2 体系判别hostPlatform

地址:lib/utils/hostPlatform

无星的自动化之旅(四)—— PlayWright内网升级ms-playwright

体系判别都在这儿,只保存自己需求的体系,注视掉其他的,从头运转即可。

例如我需求linux

无星的自动化之旅(四)—— PlayWright内网升级ms-playwright
从头运转

无星的自动化之旅(四)—— PlayWright内网升级ms-playwright

能够看到,途径都变成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