我正在使用Chrome和Chromium的无头版本来对给定页面进行屏幕截图。它在Windows和Ubuntu服务器上运行良好,但在Ubuntu桌面虚拟机上则不然。
我得到错误">只有在启用远程调试时才支持打开多个选项卡";在Ubuntu桌面上,当我尝试截图(--screenshot
标志(或生成PDF文件(--print-to-pdf
标志(时。
我可以使用--remote-debugging-port
标志来启用远程调试,但当它被启用时,您不能使用--screenshot
标志或--print-to-pdf
标志。
关于如何在Ubuntu桌面上使用这些标志,有什么想法吗?
详细信息
在窗口上
版本:
谷歌Chrome版本84.0.4147.125
使用的命令:> start chrome --headless --screenshot=%CD%example_sh.png https://example.com/
注意:您必须在windows上提供屏幕截图的路径,否则它将不会创建文件,这就是我仅在windows上添加%CD%
的原因。但这不是问题所在
命令输出:
无
生成的文件:
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包组成的解决方案不是我想要的。如果我是唯一一个使用这些标志的人,这可能是一个很好的解决方案,但这不能作为一个解决方案,因为我在一些代码中使用它们来调用命令,这些代码是与其他人共享的库的一部分。
我建议:
-
开放式铬与:
chromium-browser https://example.com/
或者如果仅CCD_ 16失败。 -
转到此新会话中选项卡中的
chrome://version
,并注意命令行和可执行路径。 -
在命令行中查找不寻常的空格,例如文件路径未正确转义的参数中的空格。(这可以在清除任何用户名后添加到问题中。(
-
使用可执行路径中指示的二进制文件,直接尝试构造
--headless
命令。如果原因来自包装器,那么这应该是有效的,如果不是,交互使用该二进制文件,请查看chrome://version->命令行。如果篡改来自于它被编译为注入到自己的命令行中的东西,那么可能没有一个好的解决方法。