Hello Playwright(简化部署方式)

人生必须的知识就是引人向光明方面的明灯。这篇文章主要讲述Hello Playwright:简化部署方式相关的知识,希望能为你提供帮助。
前言??上次的文章??发表后,有网友留言问,有不有简化部署的方式:

Hello Playwright(简化部署方式)

文章图片

下面,提供 2 种可行的方案。
方案 1. Copy其实 Playwright 默认是到??C:\\Users\\用户名\\AppData\\Local\\ms-playwright??文件夹下查找依赖的浏览器,我们只需将本机文件夹复制到部署机器的对应文件夹即可。
但更简便的方式,是将浏览器也放到发布文件夹下一起部署。
具体做法如下:
  • 修改代码,设置查找依赖浏览器路径的环境变量:
static async Task Main(string[] args)

Environment.SetEnvironmentVariable("PLAYWRIGHT_BROWSERS_PATH", Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "ms-playwright"));

var playwright = await Playwright.CreateAsync();

...

  • 修改项目文件,设置发布时执行 Task,复制 ms-playwright 文件夹到发布文件夹下:
< Target Name="PublishPlaywright" AfterTargets="Publish">
< ItemGroup>
< PlaywrightFiles Include="$(LOCALAPPDATA)\\ms-playwright\\**\\*.*" />

< /ItemGroup>
< Copy
SourceFiles="@(PlaywrightFiles)"
DestinationFiles="$(PublishDir)\\ms-playwright\\%(RecursiveDir)%(Filename)%(Extension)"
/>
< /Target>

  • 按照正常流程发布
现在将发布文件夹复制到另一台机器上,无需运行浏览器安装命令,直接运行控制台程序。
控制台程序将读取 EXE 当前所在文件夹下的??ms-playwright??文件夹,获取依赖的浏览器。
但是,这种方式有个明显的缺点——开发和部署的计算机的操作系统必须一致,比如, Windows 开发机上的浏览器文件不能发布到 Linux 上运行。
这时,可以采用方案 2。
方案 2. 自动安装方案 2 还是需要运行浏览器安装命令,但是从手工运行改成由代码运行:
static async Task Main(string[] args)

Console.WriteLine("Start download chromium");
var exitCode = Microsoft.Playwright.Program.Main(new[]"install", "chromium" );
if (exitCode != 0)

throw new Exception($"Playwright exited with code exitCode");


var playwright = await Playwright.CreateAsync();

...

需要注意的是,部署模式一定要选“独立”,否则对应操作系统的安装脚本不会复制到发布文件夹。(我发现 v1.21  存在此  bug,已提交 issue 并修复)
按照正常流程发布,直接运行控制台程序。
控制台程序将自动执行浏览器安装命令:
Hello Playwright(简化部署方式)

文章图片

结论【Hello Playwright(简化部署方式)】2 种简化部署方案,是否能够满足你的需要?欢迎留言反馈!

    推荐阅读