genpaku's footprint

忘れてもいいように、技術で日々が少し便利になることを書いていきます

Selenium WebDriverでスクリーンショットをとる

今回は画面キャプチャを毎回とるのがめんどくさかったため、Seleniumを使って自動化してみます。

使う言語はC#でやってみます。

1. VisualStudioプロジェクトを作る

まずはVisual Studio 2015を使ってプロジェクトを作ります。 今回は、テンプレートはコンソールアプリケーションを選択します。 テストに使いたい場合は、テストアプリケーションを使うのもおすすめです。 というか通常は後者のほうが多いと思います。今回は動作確認をしたいだけなので、コンソールアプリでサクっと作ります。

2. nugetを使って、Seleniumをインストールする

メニューバーから「プロジェクト > NuGetパッケージ管理」をクリックします。 「Selenium」で検索して、「Selenium WebDriver 」をサクッとインストールします。 f:id:crossroad19931110:20160119194953p:plain

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が立ち上がって、ページが自動で遷移します。 そして実行が終わると無事ファイルが出来ていました。

f:id:crossroad19931110:20160119200402p:plain

めでたし、めでたし。 若干いまさら感のあるSeleniumですが、頑張れば色々できそうなので これかも少しずつ試して行きたいと思います。