无法在 Ubuntu 桌面上使用 Chromium 的无头模式使用 --screenshot 或 --print-to-pdf

Unable to use --screenshot or --print-to-pdf using headless mode of Chromium on Ubuntu desktop

我正在使用 Chrome 的无头版本和 Chromium 来截取给定页面的屏幕截图。 它在 Windows 和 Ubuntu 服务器上运行良好,但在 Ubuntu 桌面虚拟机上运行不佳。

我在 Ubuntu 桌面上尝试截图时收到错误消息“仅当启用远程调试时才支持打开多个选项卡”(--screenshot 标志)或生成 PDF 文件(--print-to-pdf 标志)。

我可以使用 --remote-debugging-port 标志启用远程调试,但启用后,您不能使用 --screenshot 标志或 --print-to-pdf 标志。

关于如何在 Ubuntu 桌面上使用这些标志有什么想法吗?

详情

在 windows

版本:
Google Chrome 版本 84.0.4147.125

使用的命令
> start chrome --headless --screenshot=%CD%\example_sh.png https://example.com/

注意:您必须在 windows 上提供屏幕截图的路径,否则它不会创建文件,这就是我在 [=112] 上添加 %CD%\ 的原因=] 只有。但这不是这里的问题。

命令输出 :
None

文件生成:
Yes

在 Ubuntu 服务器上

版本:

$ chromium-browser --version
Chromium 84.0.4147.105 Built on Ubuntu , running on Ubuntu 18.04

使用的命令
$ chromium-browser --headless --screenshot=example_sh.png https://example.com/

命令输出 :
[0812/102830.971006:INFO:headless_shell.cc(615)] Written to file example_sh.png.

文件生成:
Yes

在 Ubuntu 桌面上

版本:

$ chromium-browser --version
Chromium 84.0.4147.105 snap

使用的命令
$ chromium-browser --headless --screenshot=example_sh.png https://example.com/

命令输出 :
[0812/123941.367535:ERROR:headless_shell.cc(174)] Open multiple tabs is only supported when remote debugging is enabled.

文件生成:
No


请注意,由替换 .deb 包组成的解决方案不是我想要的。如果我是唯一一个使用这些标志的人,这可能是一个很好的解决方法,但这不会作为解决方案,因为我在一些代码中调用使用它们的命令,这些代码是与其他人共享的库的一部分.

我建议:

  1. 打开 chromium 交互: chromium-browser https://example.com/ 或者如果失败只是 chromium-browser.

  2. 在这个新会话的选项卡中转到 chrome://version 并记下 命令行 可执行路径.

  3. 在命令行中查找异常空格,例如来自带有未正确转义的文件路径的参数。 (这可以在清理任何 usernames/etc 之后添加到问题和问题中。)

  4. 使用可执行路径中指示的二进制文件直接尝试构造您的--headless命令。如果原因来自包装器,这应该可以工作,如果不是,则以交互方式使用该二进制文件,再次查看 chrome://version -> Command Line。如果 mangling 来自它被编译为注入到它自己的命令行中的东西,可能没有一个好的解决方法。