Google chrome 无法在Ubuntu桌面上使用Chromium的无头模式使用--屏幕截图或--打印为pdf

Google chrome 无法在Ubuntu桌面上使用Chromium的无头模式使用--屏幕截图或--打印为pdf,google-chrome,ubuntu,chromium,headless,google-chrome-headless,Google Chrome,Ubuntu,Chromium,Headless,Google Chrome Headless,我正在使用Chrome和Chrome的无头版本对给定页面进行截图。 它在Windows和Ubuntu服务器上运行良好,但在Ubuntu桌面虚拟机上不起作用 当我尝试拍摄屏幕截图(--screenshot标志)或生成PDF文件(--print to PDF标志)时,在Ubuntu桌面上出现错误“只有启用远程调试时才支持打开多个选项卡” 我可以使用--远程调试端口标志启用远程调试,但启用后,您不能使用--屏幕截图标志或--打印到pdf标志 有没有关于如何在Ubuntu桌面上使用这些标志的想法 细节

我正在使用Chrome和Chrome的无头版本对给定页面进行截图。 它在Windows和Ubuntu服务器上运行良好,但在Ubuntu桌面虚拟机上不起作用

当我尝试拍摄屏幕截图(
--screenshot
标志)或生成PDF文件(
--print to PDF
标志)时,在Ubuntu桌面上出现错误“只有启用远程调试时才支持打开多个选项卡”

我可以使用
--远程调试端口
标志启用远程调试,但启用后,您不能使用
--屏幕截图
标志或
--打印到pdf
标志

有没有关于如何在Ubuntu桌面上使用这些标志的想法

细节 在窗户上 版本
谷歌浏览器版本84.0.4147.125

使用的命令

>启动chrome--无头--屏幕截图=%CD%\example\u sh.pnghttps://example.com/

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

命令输出
没有

生成的文件:

在Ubuntu服务器上 版本

$ chromium-browser --version
Chromium 84.0.4147.105 Built on Ubuntu , running on Ubuntu 18.04
$ chromium-browser --version
Chromium 84.0.4147.105 snap
使用的命令:
$chromium浏览器--无头--屏幕截图=示例\u sh.pnghttps://example.com/

命令输出
[0812/102830.971006:INFO:headless_shell.cc(615)]写入文件example_sh.png。

生成的文件:

在Ubuntu桌面上 版本

$ chromium-browser --version
Chromium 84.0.4147.105 Built on Ubuntu , running on Ubuntu 18.04
$ chromium-browser --version
Chromium 84.0.4147.105 snap
使用的命令:
$chromium浏览器--无头--屏幕截图=示例\u sh.pnghttps://example.com/

命令输出
[0812/123941.367535:错误:headless_shell.cc(174)]只有在启用远程调试时才支持打开多个选项卡。

生成的文件:


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

我建议:

  • 打开chromium,与以下内容交互:
    chromium浏览器https://example.com/
    或者如果失败,只需
    chromium浏览器

  • 转到
    chrome://version
    在此新会话的选项卡中,注意命令行和可执行路径

  • 在命令行中查找不寻常的空格,例如,带有未正确转义的文件路径的参数。(在对任何用户名/等进行消毒后,可将其添加到问题和问题中。)

  • 使用可执行路径中指示的二进制文件直接尝试构造
    --headless
    命令。如果原因是来自包装器,那么这应该有效,如果不是,则以交互方式使用该二进制文件,请查看chrome://version ->命令行。如果损坏源于编译后注入到自己的命令行中的内容,那么可能没有一个好的解决方法

  • 我建议:

  • 打开chromium,与以下内容交互:
    chromium浏览器https://example.com/
    或者如果失败,只需
    chromium浏览器

  • 转到
    chrome://version
    在此新会话的选项卡中,注意命令行和可执行路径

  • 在命令行中查找不寻常的空格,例如,带有未正确转义的文件路径的参数。(在对任何用户名/等进行消毒后,可将其添加到问题和问题中。)

  • 使用可执行路径中指示的二进制文件直接尝试构造
    --headless
    命令。如果原因是来自包装器,那么这应该有效,如果不是,则以交互方式使用该二进制文件,请查看chrome://version ->命令行。如果损坏源于编译后注入到自己的命令行中的内容,那么可能没有一个好的解决方法


  • 我已经打开了一个关于这个错误的窗口,但是我仍然不确定这是否是一个错误。我的项目因为这个问题而陷入僵局,所以如果有人能提供解决方案,我就悬赏这个问题。我觉得chromium浏览器的别名/包装方式让它看起来像有两个非“-”参数,所以它认为您需要一个额外的页面以及example.com,如果你忽略了网站,它可能会运行,你会得到一个自定义起始页的图像或其他什么?@lossleader确实,如果忽略了网站,它会运行并生成一个空白图像(只有默认大小的白色背景)。我已经打开了一个关于此错误的窗口,但我仍然不确定这是否是一个错误。我的项目因为这个问题而陷入僵局,所以如果有人能提供解决方案,我就悬赏这个问题。我觉得chromium浏览器的别名/包装方式让它看起来像有两个非“-”参数,所以它认为您需要一个额外的页面以及example.com,如果你忽略了网站,它可能会运行,你会得到一个自定义起始页的图像或其他什么?@lossleader确实,如果忽略了网站,它会运行并生成一个空白图像(只有默认大小的白色背景)。非常感谢你的回答<代码>可执行路径是解决方案的关键。使用它而不是
    chromium
    chromium browser
    命令不会导致任何错误。屏幕上显示的可执行路径chrome://version 页面为
    /snap/chromium/1260/usr/lib/chromium浏览