背景
我的任务是用Chromium替换基于IE的打印逻辑,以便我们最终可以支持在Windows Server Core或潜在的其他支持.Net Core的操作系统上运行当前的服务器软件。我目前的想法是使用Chromium embedded framework或使用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)
我在互联网上检查了一下,发现了一些关于此错误的提及,但建议的修复似乎无法解决该问题。
答案 0 :(得分:4)
我能够通过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 Tests:chromium chrome.exe的命令行测试似乎从容器命令行无法运行。
但是,当您在容器中运行dotnet test app.csproj或dotnet vstest app.dll时,网络驱动程序会成功启动并驱动浏览器
答案 1 :(得分:3)
这已报告给Chromium小组。看来Chromium 68+可能与Windows Server 2016有关。
https://bugs.chromium.org/p/chromium/issues/detail?id=873097