Selenium WebDriverでスクリーンショットをとる
今回は画面キャプチャを毎回とるのがめんどくさかったため、Seleniumを使って自動化してみます。
使う言語はC#でやってみます。
1. VisualStudioプロジェクトを作る
まずはVisual Studio 2015を使ってプロジェクトを作ります。 今回は、テンプレートはコンソールアプリケーションを選択します。 テストに使いたい場合は、テストアプリケーションを使うのもおすすめです。 というか通常は後者のほうが多いと思います。今回は動作確認をしたいだけなので、コンソールアプリでサクっと作ります。
2. nugetを使って、Seleniumをインストールする
メニューバーから「プロジェクト > NuGetパッケージ管理」をクリックします。 「Selenium」で検索して、「Selenium WebDriver 」をサクッとインストールします。
3. Mainメソッド作る
今回は単純に1つのページを表示して、指定したフォルダにキャプチャを保存するというプログラムを作ります。 結果はこのような感じになります。
using System; using OpenQA.Selenium.Firefox; using OpenQA.Selenium; namespace BlogSelenium { class Program { static void Main(string[] args) { // Firefox用のWebDriverをインスタンス化 IWebDriver driver = new FirefoxDriver(); // Firefoxでページを表示する driver.Navigate().GoToUrl("https://www.google.co.jp/"); // スクリーンショットをとる Screenshot ss = ((ITakesScreenshot)driver). GetScreenshot(); // デスクトップにファイル名にタイトルをつけて保存する var title = driver.Title; var file = System.IO.Path.Combine(System.Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) ,title + ".png"); ss.SaveAsFile(file, System.Drawing.Imaging.ImageFormat.Png); } } }
4. 実行してみる
実行するとFirefoxが立ち上がって、ページが自動で遷移します。 そして実行が終わると無事ファイルが出来ていました。
めでたし、めでたし。 若干いまさら感のあるSeleniumですが、頑張れば色々できそうなので これかも少しずつ試して行きたいと思います。