38
42

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

C#でSelenium2を使用して主要ブラウザを動かしてみた

Last updated at Posted at 2016-09-29

はじめに

C#でSelenium2(Selenium Webdriver)1を使ってみようと思っている方に
どのようなものかを実際に動かしてもらうことを目的としています。

やってみること

主要ブラウザ2でgoogleにアクセスしてSelenium2と検索する

本日のめにゅー

  1. VSでコンソールアプリケーションのプロジェクトを新規作成する
  2. NuGetから各種パッケージを取得
    • Selenium.Support
    • Selenium.WebDriver
    • Selenium.WebDriver.ChromeDriver
    • Selenium.WebDriver.IEDriver
    • WebDriver.GeckoDriver 3
  3. 各ブラウザーのウェブドライバーを作成するクラスを作成
  4. googleにアクセスしてSelenium2と検索する部分の作成
  5. 実行してみる

準備済みのサンプルコードはこちら

1. VSでコンソールアプリケーションのプロジェクトを新規作成する

VSからコンソールアプリケーションを作成する

2. NuGetから各種パッケージを取得

packages.config
<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="Selenium.Support" version="2.53.1" targetFramework="net452" />
  <package id="Selenium.WebDriver" version="2.53.1" targetFramework="net452" />
  <package id="Selenium.WebDriver.ChromeDriver" version="2.24.0.0" targetFramework="net452" />
  <package id="Selenium.WebDriver.IEDriver" version="2.53.1.1" targetFramework="net452" />
  <package id="WebDriver.GeckoDriver" version="0.9.0" targetFramework="net452" />
</packages>

3. 各ブラウザーのウェブドライバーを作成するクラスを作成する

WebDriverFactory.cs
internal class WebDriverFactory
{
    public static IWebDriver CreateInstance(AppSettings.BrowserName browserName)
    {
        switch (browserName)
        {
            case AppSettings.BrowserName.None:
                throw new ArgumentException(string.Format("Not Definition. BrowserName:{0}", browserName));

            case AppSettings.BrowserName.Chrome:
                return new ChromeDriver();

            case AppSettings.BrowserName.Firefox:
                FirefoxDriverService driverService = FirefoxDriverService.CreateDefaultService();
                driverService.FirefoxBinaryPath = @"C:\Program Files (x86)\Mozilla Firefox\firefox.exe";
                driverService.HideCommandPromptWindow = true;
                driverService.SuppressInitialDiagnosticInformation = true;
                return new FirefoxDriver(driverService);

            case AppSettings.BrowserName.InternetExplorer:
                return new InternetExplorerDriver();

            case AppSettings.BrowserName.Edge:
                return new EdgeDriver();

            case AppSettings.BrowserName.Safari:
                return new SafariDriver();

            default:
                throw new ArgumentException(string.Format("Not Definition. BrowserName:{0}", browserName));
        }
    }
}
AppSettings.cs
internal static class AppSettings
{
    public enum BrowserName
    {
        None,
        Chrome,
        Firefox,
        InternetExplorer,
        Edge,
        Safari
    }
}

4. googleにアクセスしてSelenium2と検索する部分の作成

Program.cs
internal class Program
{
    private static void Main(string[] args)
    {
        // AppSettings.BrowserName.Firefoxを変更することによって対象のブラウザを変更できます
        using (IWebDriver webDriver = WebDriverFactory.CreateInstance(AppSettings.BrowserName.Chrome))
        {
            // https://www.google.co.jp に遷移させる
            webDriver.Url = @"https://www.google.co.jp";

            // #lst-ibの要素を取得する
            IWebElement element = webDriver.FindElement(By.CssSelector("#lst-ib"));

            // 上記取得した要素に対してテキストを入力してサブミット
            element.SendKeys("Selenium2");
            element.Submit();

            // 一瞬で完了するため3秒スリープ
            Thread.Sleep(TimeSpan.FromSeconds(3));

            // ブラウザを閉じる
            webDriver.Quit();
        }
    }
}

※Seleniumのリファレンスについてはこちら

5. 実行してみる

上記が作成できたら実際に実行してみましょう!!
すると、コンソールが立ち上がった後に、ブラウザが立ち上がり見事Selenium2を検索できたかと思います。
WebDriverFactory.CreateInstance()の引数を変更することにより各ブラウザで動作します。 4

まとめ

一見すごく簡単にできるなと思ったあなたそうなんです!
動かすだけならたいして大変ではありませんでした。

ただ、今回は単純なケースでしたのでこれだけになりますが、
実際はもっと複雑であって、実運用をしていくと結構大変になります。
そこら辺は次回の記事で投稿しようかと思います。

注釈

  1. こちらのページを閲覧している時点で説明不要かと思いますが、SeleniumとはUIテストの自動化を行うツールです。また、Selenium2(Selenium Webdriver)とはプログラムから呼び出しブラウザを操作するためのドライバーです。

  2. 各ブラウザとはChrome, Firefox, InternetExplorer, Edge, Safariを対象にしています。Edge, Safariについては動作確認を行っておりません。また、safariに関してはApple Developerに登録する必須があるようです

  3. WebDriver.GeckoDriverはFireFoxを動作させるために必要になります。FireFox v48あたりからないと動作しなくなりました。

  4. 当たり前といえば当たり前ですが、実行するには該当のブラウザをインストールしておく必要があります。

38
42
1

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
38
42

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?