LoginSignup
12
10

More than 5 years have passed since last update.

Chrome59 通常時とヘッドレスモードの動作の比較

Posted at

2017/06/05頃にChrome59がリリースされたようです。
このバージョンからヘッドレスモード対応との事で、待ち遠しくしていた方々も多いのではと思います。
ただし最新版のドライバーChromeDriver2.29ではChrome58までしか対応していないため、もうしばらく待つ必要があります。とはいえ、ある程度は動かせるので、準備をしておくことは可能です。

ヘッドレスモードでの動作方法

通常時(非ヘッドレスモード)はChrome59+ChromeDriver2.29の組み合わせで問題なく動作するようです。

System.setProperty("webdriver.chrome.driver", "/path/to/chromedriver");

WebDriver driver = new ChromeDriver();
driver.get("http://qiita.com/");

File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(scrFile, new File("/path/to/screenshot.png"));

driver.quit();

そして「ヘッドレス Chrome ことはじめ」などを参考にしてChromeのパラメータを追加します。

System.setProperty("webdriver.chrome.driver", "/path/to/chromedriver");

// Chromeのパラメータ「--headless --disable-gpu」指定
ChromeOptions options = new ChromeOptions();
options.addArguments("--headless", "--disable-gpu");

// WebDriver driver = new ChromeDriver();
WebDriver driver = new ChromeDriver(options);
driver.get("http://qiita.com/");

File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(scrFile, new File("/path/to/screenshot.png"));

driver.quit();

こんな感じにすれば、ディスプレイのない環境でもスクリーンショットが撮れます。

現時点での動作比較

私のLinux環境だけなのかもしれませんが、よく理解できない動作の違いがちらほら見られます。
安定するまでは注意して使用したほうが良さそうです。

プロキシ設定が動作しない

OS設定と異なるプロキシを使用する場合、Chromeではパラメータ

-–proxy-server="http=xxx.xxx.xxx.xxx:8080;https=xxx.xxx.xxx.xxx:8080"
--proxy-bypass-list="local-test-server"

のように指定すればいいはずなのですが、ヘッドレスモード時にこれを付けると

WebDriver driver = new ChromeDriver(options);

あたりで止まってしまいます。

証明書に問題のあるサイトにアクセスできない

URLの左側に赤い三角が出るサイトにアクセスしようとすると

driver.get(url);

で止まります。Chromeのパラメータ--ignore-certificate-errorsというのを付けてみても変化なし。

ウインドウの切り替え処理が動作しない

複数ウインドウが絡むサイトの場合、

driver.switchTo().window(windowId);

のようにして切り替えるのですが、数分待っても切り替わりません。

12
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
10