web-dev-qa-db-ja.com

Googleを起動する方法Chromeヘッドレスモードで?

http://peter.sh/experiments/chromium-command-line-switches/#chrome-frame でスイッチのリストを慎重に修正しましたが、起動するものが見つかりませんでしたChrome隠されたバックグラウンドプロセス。

一番近いのは--keep-alive-for-test +カスタムパッケージアプリ、ただし(ウィンドウの表示方法)ChromeHiddenのため、アプリは渡されたコードの実行に失敗します。

57
Silviu-Marian

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=54695

主な成果物は次のとおりです。

  1. ヘッドレスアプリケーションがリンクできるライブラリ。
  2. ヘッドレスAPIの使用方法を示すサンプルアプリケーション。

そのため、ディスプレイに接続せずにコンソールで実行するシンプルなアプリケーションを作成することができます。

16年4月18日更新:作業は主に行われます。現在公開フォーラムがあります:

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

ドキュメントが進行中です:

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

16年9月20日更新:chromeは最終的に「--headless」パラメータを取得します:- https://bugs.chromium.org/p/chromium/issues/detail?id=612904

BlinkOn 6で プレゼンテーション がありました(2016年6月16/17日)

16年11月29日更新:--headlessフラグの設計ドキュメント: https://docs.google.com/document/ d/1aIJUzQr3eougZQp90bp4mqGr5gY6hdUice8UPa-Ys90/edit#heading = h.qxqfzv2lj12s

16年12月13日更新:--headlessフラグは、Canaryビルドで間もなく利用可能になる予定です

17年3月12日更新:Chrome 57には--headlessフラグが機能しています。Seleniumやその他の待機中ユーザーガイド: https://chromium.googlesource.com/chromium/src/+/lkgr/headless/README.md

62
Vanuan

この男は、Chrome Xvfb(X仮想フレームバッファー)を使用してヘッドレスで実行し、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
23
Chris B

または、ヘッドレスWebKit実装である PhantomJS プロジェクトを見ることができます。

12
Anthony O.

子サブプロセスとして起動すると、ヘッドレスモードで起動します。それに加えて:

  • nircmd.exeでできることwin hide on chrome PIDに基づいて
  • Autohotkey_Lは、Chrome=タスクバーボタンなしで非表示にすることもできます
7
Silviu-Marian

Linux VMを設定し、その中で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 &
7
mit

Chromium Embedded Frameworkプロジェクト は、ユースケースに合うようです。私はこのプロジェクトを個人的に経験したことはありませんが、良いことを聞いたことがあり、目的に合わせて活用できる強固なAPIを備えています。

5
Mike West

まだコメントするほどの評判はありませんが、Vanuanが言及しているchromeヘッドレスモードが実際にSelenium Webdriverで動作することを皆さんに伝えたいと思います。

Javaでは、次のコードでchromeDriverを介してフラグをchromeに渡すことができます。

ChromeOptions options = new ChromeOptions();
options.addArguments("--headless");
ChromeDriver chromeDriver = new ChromeDriver(options);
3
Marlies

私は最近見つけました この記事 それはそれを行うように見えるいくつかのコマンドラインオプションに言及しています。これらのキーワードを使用してグーグルアウトしました このコード これらのオプションが存在することを確認しているようです。

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

Chrome with --no-startup-windowそして実際、ウィンドウなしで起動しました。正常に起動し、典型的なすべての子供を生成したように見えましたが、内部にロードしようとしたWebサイトは実際には訪問されなかったようです。このヘッドレスモードはアプリを実行するためだけであり、ヘッドレスサイトを訪問するためではない可能性があります*)が、通常のワーカーツリーが設定されているため、ウィンドウがないだけで非常に有望に見えます。

2番目のオプション--silent-launch made chromeプロセスは非常に静かです。子プロセスが発生せず、プロセスがすぐに終了したことに気付きませんでした。

これらのオプションでの試みに失敗した後、あまり洗練されていない方法に焦点を当てました。リストの下部には2つのオプションがあります。

// 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

そして、それが感じるほど汚い、それは本当の頭のないものではないことを確認しますが、それでもウィンドウは私の視界の外にあり、外部ツールが低レベルのウィンドウ非表示メッセージを送信することなく、クロムの起動オプションですべてが行われます。

*)はい、変なことをしようとしています。基本的に、テスト中にKarmaが保持しているChromeウィンドウを削除しようとしました。PhantomJSに切り替えることができることはわかっていますが、Chromeで実行する必要があり、ウィンドウが飛び出しました。 。ええ..長期的には邪魔です。

2
quetzalcoatl

現在開発中です。詳細については、こちらをご覧ください。 https://chromium.googlesource.com/chromium/src/+/master/headless/README.md

ヘッドレスChromiumは、Chromiumをヘッドレス/サーバー環境で実行するためのライブラリです。予想される使用例には、Webページの読み込み、メタデータ(DOMなど)の抽出、およびページコンテンツからのビットマップの生成が含まれます-ChromiumとBlinkが提供するすべての最新のWebプラットフォーム機能を使用します。

現在、Linuxで動作します。ニース プレゼンテーション があります。

0
Mohamed Mansour

Chrome 59には、ヘッドレスとしてインスタンスを作成する機能があります。以下のチュートリアルを見つけてください https://www.automation99.com/2017/07/how-to-use-chrome-headless-using.html?m=1

0
Anjan Mondal

また、NightwatchJSでchrome headlessを使用することもできました。これを使用できるようにする構成を次に示します。

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