我在http://peter.sh/experiments/chromium-command-line-switches/#chrome-frame处仔细修改了切换列表,但在隐藏的后台进程中找不到任何会启动Chrome的内容。
我最接近的是--keep-alive-for-test
+自定义打包应用,但应用无法执行任何传递的代码,因为(报告的方式)“没有窗口 - ChromeHidden”。
答案 0 :(得分:61)
<强> TL; DR 强>
google-chrome --headless --remote-debugging-port=9222 http://example.com
您还需要暂时--disable-gpu
。
<强>教程强>:
https://developers.google.com/web/updates/2017/04/headless-chrome
正在进行的工作:https://code.google.com/p/chromium/issues/detail?id=546953
主要可交付成果是:
- 无头应用程序可以链接到的库。
- 演示使用无头API的示例应用程序。
醇>
因此,可以创建一个在控制台中运行而不连接到显示的简单应用程序。
4月18日更新&#39; 16:工作主要完成。现在有一个公共论坛:
https://groups.google.com/a/chromium.org/forum/#!forum/headless-dev
文档正在进行中:
https://chromium.googlesource.com/chromium/src/+/master/headless/README.md
9月20日更新&#39; 看起来Chrome最终会得到&#34; - 无头&#34;参数: https://bugs.chromium.org/p/chromium/issues/detail?id=612904
BlinkOn 6(2016年6月16日,17日)有a presentation
更新11月29日&#39; 16: --headless
旗帜的设计文档:https://docs.google.com/document/d/1aIJUzQr3eougZQp90bp4mqGr5gY6hdUice8UPa-Ys90/edit#heading=h.qxqfzv2lj12s
12月13日更新&#39; --headless
标志预计很快将在Canary版本中提供
3月12日更新&#39; :Chrome 57的--headless
标志有效。等待Selenium和其他工具赶上来。用户指南:https://chromium.googlesource.com/chromium/src/+/lkgr/headless/README.md
答案 1 :(得分:22)
这家伙设法通过使用Xvfb(X虚拟帧缓冲区)无聊地运行Chrome,以欺骗Chrome认为它正在显示一个窗口:
http://e-method.blogspot.fr/2010/11/google-chrome-with-xvfb-headless-server.html
如果你在Linux上,你可以试试。
所以基本上你需要通过以下方式安装X虚拟帧缓冲区和谷歌浏览器
root@localhost: ~# apt-get install xvfb imagemagick
root@localhost: ~# apt-get install google-chrome
然后在显示屏上运行浏览器:
root@localhost: ~# xvfb-run --server-args='-screen 0, 1024x768x24' \
google-chrome -start-maximized http://www.example.com \
> & /dev/null &
root@localhost: ~# DISPLAY=:99 import -window root myimage.png
答案 2 :(得分:12)
或者您可以查看PhantomJS项目,这是一个无头的WebKit实现。
答案 3 :(得分:7)
如果你把它作为子子进程启动,它会以无头模式启动。除此之外:
win hide
答案 4 :(得分:7)
您可以设置一个Linux VM并在其中使用xvfb。
在debian / ubuntu上安装:
sudo aptitude install xvfb
启动Chrome无头并访问http://example.com:
xvfb-run --server-args='-screen 0, 1024x768x16' google-chrome
-start-maximized http://example.com > /dev/null &
答案 5 :(得分:5)
Chromium Embedded Framework project似乎可能适合您的用例。我没有亲身体验这个项目,但我听说过很好的东西,并且它有一个可靠的API,你应该可以为你的目的利用它。
答案 6 :(得分:3)
我还没有足够的声誉发表评论,但是想让大家知道,Vanuan提到的镀铬无头模式实际上与Selenium webdriver配合使用。
在Java中,您可以使用以下代码通过chromeDriver将标记传递给chrome:
ChromeOptions options = new ChromeOptions();
options.addArguments("--headless");
ChromeDriver chromeDriver = new ChromeDriver(options);
答案 7 :(得分:2)
我最近发现this article提到了几个似乎这样做的命令行选项。使用这些关键字,我搜索了this piece of code,这似乎证实了这些选项存在。
// Does not automatically open a browser window on startup (used when
// launching Chrome for the purpose of hosting background apps).
const char kNoStartupWindow[] = "no-startup-window";
// Causes Chrome to launch without opening any windows by default. Useful if
// one wishes to use Chrome as an ash server.
const char kSilentLaunch[] = "silent-launch";
我设法用--no-startup-window
成功运行Chrome,确实在没有任何窗口的情况下启动了Chrome。看起来它发射得很好,它催生了所有典型的孩子,但我试图让它加载的网站似乎并没有真正被访问过。这种无头模式可能只适用于运行应用程序,而不适用于无头访问网站*),但它看起来非常有前途,因为正常的工作树已经设置,只有没有窗口。
第二个选项--silent-launch
使chrome进程非常安静。我没有注意到任何生成的孩子,这个过程很快就会消失。我怀疑它是否适用于这种情况。
在我尝试使用这些选项失败之后,我专注于不太复杂的方法。在列表的底部有两个选项:
// Specify the initial window position: --window-position=x,y
const char kWindowPosition[] = "window-position";
// Specify the initial window size: --window-size=w,h
const char kWindowSize[] = "window-size";
我运行Chrome并选择将其完全移出工作区域:
--window-size=800,600 --window-position=-800,0
并且感觉很脏,确定它没有真正的无头,但是窗户仍然不在我的视线范围内,而且一切都是用Chrome的启动选项完成的,没有外部工具发送低级别隐藏窗口的消息。
*)是的,我知道尝试做奇怪的事情。基本上我试图摆脱考试期间由Karma保留的Chrome窗口。我知道我可以切换到PhantomJS,但我特别需要在Chrome中运行它们,窗口突然出现......呃......从长远来看是令人不安的。
答案 8 :(得分:0)
目前正在开发中,您可以从此处阅读有关它的更多信息: https://chromium.googlesource.com/chromium/src/+/master/headless/README.md
Headless Chromium是一个用于运行Chromium的库 无头/服务器环境。预期的用例包括加载Web 页面,提取元数据(例如,DOM)并从中生成位图 页面内容 - 使用提供的所有现代Web平台功能 由Chromium和Blink。
它目前适用于Linux,有一个很好的presentation。
答案 9 :(得分:0)
我还能够使用NightwatchJS制作镀铬无头工作。这是让我使用它的配置:
"chromeHeadless": {
"desiredCapabilities": {
"browserName": "chrome",
"chromeOptions": {
"args": ["--headless"],
"binary": "/Applications/Google Chrome Canary.app/Contents/MacOS/Google Chrome Canary"
}
}
}
答案 10 :(得分:0)
Chrome 59能够将实例创建为无头。 找到下面的教程 https://www.automation99.com/2017/07/how-to-use-chrome-headless-using.html?m=1