Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

SeleniumからヘッドレスChromeをプロキシ環境下で使用する

More than 1 year has passed since last update.

概要

とある用途でSeleniumを使用してWebスクレイピングをするときにヘッドレスChromeを利用しました。
職場でもテストするときにヘッドレスで動かせるようにしたろ!って設定したら動かなかったのです:weary:
お前の環境だけじゃい!という内容かもしれないが、動くようにするまでの設定をまとめます:metal:

環境

Selenium Gridのhubもnodeも全てローカル環境のみで試しています。

ソフト バージョン
OS Windows7 64bit
Chrome 67.0.3396.99
ChromeDriver 2.40

試したら動かなかった

Selenium(Java)でE2Eテスト環境を構築するで作成した環境に対し、ヘッドレス Chrome ことはじめを参考に設定を変えました。

argsの詳細はCapabilities & ChromeOptionsとかList of Chromium Command Line Switchesで見れます。

prefsはPreferencesConfiguring Other Preferencesですかね。
良い一覧が見つかりませんでした。

Pitalium環境でなくても org.openqa.selenium.remote.DesiredCapabilities に同じような設定をすれば動くんじゃないかと思います。

capabilities.json
[
 {
  "browserName": "chrome",
  "chromeOptions": {
    "args": [
         "headless",
         "disable-gpu",
         "remote-debugging-port=9222"
    ],
    "prefs": {
       "download.prompt_for_download":false
    }
  }
 }
]

動かしてみるとブラウザは画面に表示されないが・・・
http://localhost:4444/grid/console を確認するとブラウザは使われている。
qiita1.JPG

しかし指定した要素が見つからないエラーで終わってしまいます。
もちろんヘッドレスの設定でなければ要素は見つかり操作が進みます。

動かなかったのでChromeのデバッグをしてみた

ここで念のため設定していた『remote-debugging-port=9222』が活躍します。

Chromeを開き http://localhost:9222 にアクセスすると開いているタブがリンクで一覧表示されます。
そのリンクを開くとヘッドレスで動いているブラウザの画面が見れるのですが、以下のように驚きの白さ:innocent:
qiita2.JPG

プロキシの設定をしたら動いた

とりあえずプロキシ環境下だからプロキシ設定してみるかなと以下のように設定。

capabilities.json
[
 {
  "browserName": "chrome",
  "chromeOptions": {
    "args": [
         "headless",
         "disable-gpu",
         "proxy-server=http://proxyserver:8080",
         "remote-debugging-port=9222"
    ],
    "prefs": {
       "download.prompt_for_download":false
    }
  }
 }
]

先ほどと同様に http://localhost:9222 にアクセスして画面を見ると表示されてるやん!
※問題あるとき以外はこの画面開かない方が良さそう。操作を取ってしまい進まなくなることがある。
qiita3.JPG

んーヘッドレスの時はユーザープロファイルがなんか違うのか?
Stack Overflowとか色々調べたら原因わかりそうだけど解決したから良しとしとこ:thinking:

umasaki
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away