任何方式启动谷歌浏览器在无头模式?
我仔细地修改了http://peter.sh/experiments/chromium-command-line-switches/#chrome-frame上的开关列表,找不到在隐藏的后台进程中启动Chrome的任何内容。
我能够做到的最接近的就是--keep-alive-for-test
+自定义打包的应用程序,但是应用程序无法执行任何传递的代码,因为(报告的方式)“无窗口 – ChromeHidden”。
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的示例应用程序。
因此,可以创build一个简单的应用程序,在控制台中运行而不需要连接到显示器。
更新16年4月18日:工作主要完成。 现在有一个公共论坛:
https://groups.google.com/a/chromium.org/forum/#!forum/headless-dev
文档正在进行中:
https://chromium.googlesource.com/chromium/src/+/master/headless/README.md
更新Sep 20 '16:它看起来像铬最终将得到“ – 无头”参数: https ://bugs.chromium.org/p/chromium/issues/detail?id = 612904
BlinkOn 6(2016年6月16日/ 17日)
更新11月29 '16:devise文档为--headless
标志: https : --headless
更新16年12月13日: – 无 --headless
国旗预计在金丝雀即将build成
更新3月12 '17: Chrome 57有一个 – 无--headless
国旗工作。 等待selenium和其他工具赶上。 用户指南: https : //chromium.googlesource.com/chromium/src/+/lkgr/headless/README.md
这个人通过使用Xvfb(X虚拟帧缓冲区)来无恶意地运行Chrome来诱使Chrome认为它正在显示一个窗口:
http://e-method.blogspot.fr/2010/11/google-chrome-with-xvfb-headless-server.html
如果你在Linux上,你可以试试。
所以基本上你需要通过以下方式安装X虚拟帧缓冲区和Google Chrome:
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
或者你可以看看PhantomJS项目,这是一个无头的WebKit实现。
你可以build立一个linux虚拟机,并使用它的xvfb。
在debian / ubuntu上安装:
sudo aptitude install xvfb
启动Chrome headless并访问http://example.com :
xvfb-run --server-args='-screen 0, 1024x768x16' google-chrome -start-maximized http://example.com > /dev/null &
如果将其作为子subprocess启动,则会以无头模式启动。 除此之外:
- nircmd.exe可以根据它的PID
win hide
在铬上 - Autohotkey_L也可以在没有任务栏button的情况下启动Chrome
Chromiumembedded式框架项目似乎可能适合您的用例。 我没有这个项目的个人经验,但是我听说过很好的东西,而且它有一个可靠的API,你应该可以为你的目的利用。
我还没有足够的评价,但是想让大家知道Vanuan提到的chrome headless模式实际上是和Selenium webdriver一起使用的。
在Java中,您可以通过chromeDriver将标志传递给chrome,代码如下:
ChromeOptions options = new ChromeOptions(); options.addArguments("--headless"); ChromeDriver chromeDriver = new ChromeDriver(options);
我最近发现这篇文章提到几个命令行选项似乎这样做。 使用这些关键字我search了这段代码似乎确认这些选项存在。
// 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,而且确实没有任何窗口。 它看起来好像启动正常,它产生了所有典型的孩子,但我试图使其内部加载的网站似乎并没有实际访问。 这种无头模式可能只是用于运行应用程序,而不是用于访问无头的站点*),但是它看起来非常有希望,因为普通的工作树已经build立起来了,只是没有窗户而已。
第二个选项--silent-launch
无声--silent-launch
使镀铬过程非常安静。 我没有注意到有任何孩子产生,并且过程迅速退出。 我怀疑这种情况下可以使用。
在我用这些选项尝试失败后,我专注于不那么复杂的方式。 在列表的底部有两个选项:
// 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
尽pipe感觉很脏,但确定它并不是真正的无头的,但窗口仍然不在我的视线之内,而且所有的事情都是用铬的启动选项完成的,没有外部工具发送低级窗口隐藏的消息。
*)是的,我知道尝试做奇怪的事情。 基本上我试图摆脱testing期间由Karma保存的Chrome窗口。 我知道我可以切换到PhantomJS,但我特别需要在Chrome中运行它们,并且popup的窗口是..呃..长期来说令人不安。
目前正在开发中,您可以从这里阅读更多关于它的信息: https : //chromium.googlesource.com/chromium/src/+/master/headless/README.md
无头Chromium是在无头/服务器环境中运行Chromium的库。 预期的用例包括加载网页,提取元数据(如DOM)和从页面内容生成位图 – 使用Chromium和Blink提供的所有现代Web平台function。
目前它在Linux上工作,有一个很好的演示 。
我也可以用NightwatchJS做出无头的工作。 这是让我使用它的configuration:
"chromeHeadless": { "desiredCapabilities": { "browserName": "chrome", "chromeOptions": { "args": ["--headless"], "binary": "/Applications/Google Chrome Canary.app/Contents/MacOS/Google Chrome Canary" } } }
Chrome 59有能力创build实例为无头。 find下面的教程https://www.automation99.com/2017/07/how-to-use-chrome-headless-using.html?m=1