在无头模式下运行 Chrome

Posted

技术标签:

【中文标题】在无头模式下运行 Chrome【英文标题】:running Chrome in headless mode 【发布时间】:2018-08-12 17:09:43 【问题描述】:

为了在无头模式下运行 chrome,我做到了

别名 chrome="/Applications/Google\ Chrome.app/Contents/MacOS/Google\ 铬”

chrome --remote-debugging-port=9222 --disable-gpu --headless

在控制台中,但是,我得到了这个错误,

[0305/140111.481537:ERROR:xattr.cc(64)] setxattr org.chromium.crashpad.database.initialized 文件 /var/folders/m3/92mmh21n0cx4ppf8c3bcns38hd4_kk/T/:操作不 允许 (1) [0305/140111.484254:ERROR:xattr.cc(64)] setxattr org.chromium.crashpad.database.initialized 文件 /var/folders/m3/92mmh21n0cx4ppf8c3bcns38hd4_kk/T/:操作不 允许 (1) [0305/140111.484254:INFO:crashpad_client_mac.cc(292)] 在 0.983 秒内重启处理程序 [0305/140111.513641:ERROR:gpu_process_transport_factory.cc(1009)] 丢失 UI 共享上下文。 [0305/140111.513709:ERROR:instance.cc(49)] 无法 为指标定位服务清单 [0305/140111.513733:ERROR:service_manager.cc(890)] 无法解决 服务名称:指标 [0305/140111.514229:ERROR:socket_posix.cc(142)] bind() 返回错误,errno=48: Address already in use (48)

DevTools 监听 ws://[::1]:9222/devtools/browser/c46563ca-1891-48bd-bdd6-e6122f3f3b5d [0305/140112.484141:错误:xattr.cc(64)] setxattr org.chromium.crashpad.database.initialized 文件 /var/folders/m3/92mmh21n0cx4ppf8c3bcns38hd4_kk/T/:操作不 允许 (1) [0305/140112.484641:INFO:crashpad_client_mac.cc(292)] 在 0.985 秒内重新启动处理程序 [0305/140113.489618:ERROR:xattr.cc(64)] setxattr org.chromium.crashpad.database.initialized 文件 /var/folders/m3/92mmh21n0cx4ppf8c3bcns38hd4_kk/T/:操作不 允许 (1) [0305/140113.490274:INFO:crashpad_client_mac.cc(292)] 在 0.979 秒内重新启动处理程序 [0305/140114.484881:ERROR:xattr.cc(64)] setxattr org.chromium.crashpad.database.initialized 文件 /var/folders/m3/92mmh21n0cx4ppf8c3bcns38hd4_kk/T/:操作不 允许 (1) [0305/140114.485349:INFO:crashpad_client_mac.cc(292)] 在 0.985 秒内重新启动处理程序 [0305/140115.489188:ERROR:xattr.cc(64)] setxattr org.chromium.crashpad.database.initialized 文件 /var/folders/m3/92mmh21n0cx4ppf8c3bcns38hd4_kk/T/:操作不 允许 (1) [0305/140115.489638:INFO:crashpad_client_mac.cc(292)] 在 0.985s 内重启处理程序

我也试过了,

/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222 --disable-gpu --headless

但我遇到了同样的错误。

有什么解决办法吗?

【问题讨论】:

【参考方案1】:

更新 3/6 我在自己的 MacBook 上检查了该解决方案,它确实有效。


我今天遇到同样的问题,搜索了一些文档后,我怀疑是由于MacOS中的SIP(System Integrity Protection) feature,有这个限制,即使你有root权限也不能修改/var文件夹下的文件.

所以here 是禁用该功能的方法:

    关闭 Mac(Apple > 关机)。 按住 Command-R 并按下电源按钮。按住 Command-R 直到出现 Apple 标志。 等待 OS X 启动到 OS X Utilities 窗口。 选择实用程序 > 终端。 输入 csrutil disable。 输入重新启动。

【讨论】:

真的不应该禁用系统完整性,这是一个重大的安全风险,将来会给你带来一些严重的问题。 非常个坏主意。 野蛮!如果您使用的是工作计算机,请务必不要这样做。【参考方案2】:

我从Chrome crashpad crashes on xattr得到了答案

只需在启动 Chrome 时为“崩溃转储”提供不同的目录,如下所示:

/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222 --disable-gpu --headless --crash-dumps-dir=/tmp

【讨论】:

为了清楚起见,用这个额外的标志解决了:--crash-dumps-dir=/tmp【参考方案3】:

添加以下命令标志

--disk-cache-dir=/tmp --user-data-dir=/tmp --crash-dumps-dir=/tmp

例如。

chrome --headless --disable-gpu --screenshot --disk-cache-dir=/tmp --user-data-dir=/tmp --crash-dumps-dir=/tmp http://m.baidu.com

有关更多命令行标志,请参阅here

【讨论】:

或者完全禁用崩溃日志?使用 --disable-crash-reporter(通过您的链接找到)

以上是关于在无头模式下运行 Chrome的主要内容,如果未能解决你的问题,请参考以下文章

Selenium webdriver 无法在 chrome 无头模式下定位元素

Nightwatch测试在Headless chrome模式下找不到元素

在无头模式下通过 Google Chrome 下载文件

chrome设置为无头浏览的模式,以便放linux上运行

chrome设置为无头浏览的模式,以便放linux上运行

无头 chrome + 忽略证书错误