久しぶりにSeleniumのサイトを見てみたら、バージョン3.5.0がちょうど出ていました。
折角なのでGoogle Chrome 59で搭載されたヘッドレスモードを試してみたいと思います。
環境
- Windows 10 Enterprise x64
- Google Chrome 60.0.3112.90 x64
- ChromeDriver 2.31
- Selenium WebDriver 3.5.0
コード
ヘッドレス Chromeについては「ヘッドレス Chrome ことはじめ」に詳しく書いてありました。
とりあえず、起動時にオプションとして「–headless」と「–disable-gpu」(そのうち要らなくなる予定)を付ければ、ヘッドレスモードでChromeを立ち上げられるようです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | using System; using System.Drawing.Imaging; using OpenQA.Selenium; using OpenQA.Selenium.Chrome; namespace HeadlessChromeTest { class Program { public static void Main( string [] args) { ChromeOptions options = new ChromeOptions(); options.AddArguments( new string [] { "--headless" , "--disable-gpu" }); //--headless,--disable-gpu(暫定的に必要) フラグ付加 ChromeDriver driver = new ChromeDriver( @"C:\System\WebDriver" , options); driver.GetScreenshot().SaveAsFile( @"C:\Screenshot\Yahoo.png" , ImageFormat.Png); driver.Quit(); Console.Write( "Press any key to continue . . . " ); Console.ReadKey( true ); } } } |
Yahoo!を開いてスクリーンショットを撮るだけの簡単なコードですが、意図した通りに動作しました。
そして、これまで私はヘッドレスブラウザの方が動作が早いのかと思っていたのですが、この記事を読む限り、そうではないようです。
ヘッドレスブラウザが登場した時はどう思いましたか?また,皆さんは使っていますか?
こういった質問に対しては,いつも逆に,なぜヘッドレスブラウザを使うのかを聞きたいですね。速いからだという人もいますが,実際のところ速くはありません。また,自分がユーザとしてそのWebサイトにアクセスするのに,ヘッドレスブラウザを使いますか? 使わないでしょう。
ただ,FirefoxやChromeのヘッドレスモードで,通常のブラウザと同じ振る舞いであれば使える場面もあるかもしれませんが,あまり意味はないと思います。ブラウザレベルでテスト自動化をするのは,実際にブラウザを通して表示することでそのWebサイトが安全であるかを確かめられるからであり,また,その画面を自分の目で見ることができるからです。
http://gihyo.jp/news/report/2017/07/2601?page=3 より
なるほど。
たしかに、目で見えていないとブラウザがおかしな状態になったときに気が付きにくいデメリットもあるし、無理してヘッドレスで動かす必要無いわけか。
「えっ?じゃあ、今回何のためにわざわざヘッドレスのChromeを操作したんだ・・・!?」と思ったのが今日のオチ。
(私は語れるほど詳しくないですが、きっとヘッドレスの良いところもあるはず!)
この記事へのコメントはありません。