首页 > 解决方案 > Chromium headless 是否适用于 Windows Server Core 2016?

问题描述

背景

我的任务是用 Chromium 替换我们基于 IE 的打印逻辑,以便我们最终可以支持在 Windows Server Core 或可能支持 .Net Core 的其他操作系统上运行我们当前的服务器软件。我目前的想法是使用Chromium 嵌入式框架或使用Puppeteer。我倾向于后者,因为我觉得在操作系统之间移植会更容易。

问题

最初它未能以关于沙盒的错误开始,所以我添加了 no-sandbox 标志。现在,当我尝试加载 Chromium 时,它无法启动,并出现以下异常,指出它无法加载 chrome.dll

 PS C:\Program Files (x86)\Google\Chrome\Application>> .\chrome --headless --enable-logging --disable-gpu --screenshot="C:\screen.png" "https://www.chromestatus.com/"

这会在 debug.log 文件中产生以下错误:

[0813/133208.016:ERROR:main_dll_loader_win.cc(134)] 无法从 c:\Program Files (x86)\Google\Chrome\Application\68.0.3440.106\chrome.dll 加载 Chrome DLL:找不到指定的模块. (0x7E)

我已经在互联网上进行了检查,发现了一些有关此错误的信息,但建议的修复似乎无法解决此问题。

标签: chromiumpuppeteerwindows-server-2016

解决方案


我能够通过 Chocolatey 下载 Chromium 72.0.3592.0,并且该版本已解决该问题。我使用 Server Core 2016 LTSB 进行了测试。

choco install chromium --pre -y

chrome --headless --disable-gpu --dump-dom --enable-logging https://www.chromestatus.com/ --no-first-run


编辑:

如果您尝试使用 Docker windowsservercore 和 chromium 运行 Selenium 测试: chromium chrome.exe 的命令行测试似乎永远无法从容器命令行运行。

但是,当您在容器内运行 dotnet test app.csproj 或 dotnet vstest app.dll 时,webdriver 成功启动并驱动浏览器


推荐阅读