最接近的是使用
--keep-alive-for-test
选项+自定义封装应用程序,但该应用程序无法执行任何传递的代码,因为(它的报告方式是)“没有窗口 - ChromeHidden”。--keep-alive-for-test
选项+自定义封装应用程序,但该应用程序无法执行任何传递的代码,因为(它的报告方式是)“没有窗口 - ChromeHidden”。简而言之
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使用的示例应用程序。
因此,可以创建一个简单的控制台应用程序而不连接到显示器。
更新Apr 18 '16: 工作基本完成。现在有一个公开论坛:
https://groups.google.com/a/chromium.org/forum/#!forum/headless-dev
正在编写文档:
https://chromium.googlesource.com/chromium/src/+/master/headless/README.md
更新Sep 20 '16: 看起来Chrome最终会获得"--headless
"参数:https://bugs.chromium.org/p/chromium/issues/detail?id=612904
在BlinkOn 6(2016年6月16/17日)上有一个演示。
更新Nov 29 '16: "--headless
"标志的设计文档:https://docs.google.com/document/d/1aIJUzQr3eougZQp90bp4mqGr5gY6hdUice8UPa-Ys90/edit#heading=h.qxqfzv2lj12s
更新Dec 13 '16: "--headless
"标志预计很快将在Canary版本中提供
更新Mar 12 '17: Chrome 57已经可以使用"--headless
"标志。等待Selenium和其他工具跟进。用户指南:https://chromium.googlesource.com/chromium/src/+/lkgr/headless/README.md
--headless
选项(Mac 和 Linux)。顺便问一下,你知道如何列出所有 chrome 命令行选项吗? - Déjà vu--remote-debugging-port
选项,发现 Chromium 进程没有启动,加上这个选项后就可以了。 - Jinlxz Liu这位开发者使用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实现。
原来,如果您将其作为子进程启动,则它会以无头模式启动。除此之外:
win hide
操作sudo aptitude install xvfb
启动 Chrome 无头模式并访问 http://example.com :
xvfb-run --server-args='-screen 0, 1024x768x16' google-chrome
-start-maximized http://example.com > /dev/null &
看起来Chromium嵌入式框架项目可能适合您的用例。尽管我没有亲身经验,但我听到了不少好评,而且它有一个坚实的API,您应该能够用于自己的目的。
我还没有足够的声望来发表评论,但是想让你们知道Vanuan提到的Chrome无头模式实际上可以与Selenium webdriver一起使用。
在Java中,您可以通过以下代码将标志传递给ChromeDriver:
ChromeOptions options = new ChromeOptions();
options.addArguments("--headless");
ChromeDriver chromeDriver = new ChromeDriver(options);
// 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,并且它确实在没有任何窗口的情况下启动了。它看起来是正常启动的,生成了所有典型的子进程,但我尝试加载的网站似乎并没有被访问。可能这个无头模式只适用于运行应用程序而不适用于无头*)访问站点,但正常的工作树已经设置好了,只是没有窗口。--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";
--window-size=800,600 --window-position=-800,0
该项目目前正在开发中,您可以从这里阅读更多信息: https://chromium.googlesource.com/chromium/src/+/master/headless/README.md
Headless Chromium是一个在无头/服务器环境下运行Chromium的库。预期使用情况包括加载网页、提取元数据(例如DOM)以及从页面内容生成位图——使用Chromium和Blink提供的所有现代Web平台功能。
它目前适用于Linux系统,并有一个漂亮的演示。
Chrome 59 具备创建无头实例的能力。请查看以下教程 https://www.automation99.com/2017/07/how-to-use-chrome-headless-using.html?m=1