chromium - 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)
我已经在互联网上进行了检查,发现了一些有关此错误的信息,但建议的修复似乎无法解决此问题。
解决方案
我能够通过 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 成功启动并驱动浏览器
推荐阅读
- json - 在数据工厂 v2 中将选定的 excel 列转换为 json 字符串
- java - AsyncTask 无法完美地获取网页的 html 内容
- r - 将叙述形式的日期范围转换为 .xts 日期
- r - 如何在 R 中使用 {{}} 从函数参数中打印变量名?
- postcss - Postcss 8 插件:如何避免循环进入声明函数?
- api - Google API - 身份验证设置和 .NET 客户端
- java - Selenium Java - [ArrayIndexOutOfBoundsException:1]
- selenium - SVG 元素中的 Xpath
- c# - 由于被网络公司阻止,如何在不使用 SMTP 的情况下发送自动邮件
- python - 根据条件从母数据框创建子熊猫数据框