簡體   English   中英

有無法以無頭模式啟動Google Chrome的方法嗎?

[英]Any way to start Google Chrome in headless mode?

我在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

主要可交付成果是:

  1. 無頭應用程序可以鏈接到的庫。
  2. 演示無頭API使用的示例應用程序。

因此,可以創建一個在控制台中運行而不連接到顯示的簡單應用程序。

更新於2016年4月18日:工作主要完成。 現在有一個公共論壇:

https://groups.google.com/a/chromium.org/forum/#!forum/headless-dev

文檔正在進行中:

https://chromium.googlesource.com/chromium/src/+/master/headless/README.md

2016年9月20日更新:看起來Chrome最終將獲得“ - 無頭”參數: https ://bugs.chromium.org/p/chromium/issues/detail?id = 612904

關於BlinkOn 6 的演講 (2016年6月16日,17日)

更新 --headless 11月29日:--headless flag設計doc: https--headless

--headless 12月13日更新: -很快將在Canary版本中提供 - --headless標志

更新--headless 3月12日: 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虛擬幀緩沖區和谷歌瀏覽器:

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實現。

您可以設置一個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 &

如果你把它作為子子進程啟動,它會以無頭模式啟動。 除此之外:

  • nircmd.exe可以根據其PID在chrome上win hide
  • Autohotkey_L也可以在沒有任務欄按鈕的情況下啟動Chrome隱藏

Chromium Embedded Framework項目似乎可能適合您的用例。 我沒有這個項目的個人經驗,但我聽說過好東西,並且它有一個可靠的API,你應該能夠為你的目的利用它。

我還沒有足夠的聲譽發表評論,但是想讓你們知道,Vanuan提到的鍍鉻無頭模式實際上與Selenium webdriver配合使用。

在Java中,您可以使用以下代碼通過chromeDriver將標志傳遞給chrome:

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";

我運行Chrome並選擇將其完全移出工作區域:

--window-size=800,600 --window-position=-800,0

並且它感覺很臟,確定它不是真正的無頭,但是窗口仍然不在我的視線范圍內,而且一切都是用chrome的啟動選項完成的,沒有外部工具發送低級別的窗口隱藏消息。

*)是的,我知道嘗試做奇怪的事情。 基本上我試圖擺脫測試期間由Karma保留的Chrome窗口。 我知道我可以切換到PhantomJS,但我特別需要在Chrome中運行它們,窗口彈出是......呃......從長遠來看令人不安。

它目前正在開發中,您可以從這里閱讀更多相關信息: https//chromium.googlesource.com/chromium/src/+/master/headless/README.md

Headless Chromium是一個在無頭/服務器環境中運行Chromium的庫。 預期的用例包括加載網頁,提取元數據(例如,DOM)和從頁面內容生成位圖 - 使用Chromium和Blink提供的所有現代Web平台功能。

它目前適用於Linux,有一個很好的演示

我還能用NightwatchJS制作鍍鉻無頭工作。 這是讓我使用它的配置:

    "chromeHeadless": {
  "desiredCapabilities": {
    "browserName": "chrome",
    "chromeOptions": {
      "args": ["--headless"],
      "binary": "/Applications/Google Chrome Canary.app/Contents/MacOS/Google Chrome Canary"
    }
  }
}

Chrome 59能夠將實例創建為無頭。 查找以下教程https://www.automation99.com/2017/07/how-to-use-chrome-headless-using.html?m=1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM