Hope is a Dream. Dream is a Hope.

非公開ブログは再開しました。

C#でSeleniumをPhantomJSを使ってヘッドレスで操作する.

概要

C#で各ブラウザを操作する方法を調べる. 特にPhantomJSの動作環境を整える

目的

Twitterを操作する依頼を受けた. 基本はChromeFirefoxだが、ヘッドレスなPhantomJSの動作環境を作る.

詳細

以下の二つを参考にすすめる.

最強のチートシート: Most Complete Selenium WebDriver C# Cheat Sheet

最強のサンプルコード: AutomateThePlanet-Learning-Series/WebDriver-Series

を参考に進める.とても良い資料になっている

1. 新規プロジェクトを作成

適当なプロジェクトをたちあげる. 今回はユニットテストを立ち上げる.

2. 必要なパッケージの参照を設定

nugetで一つづインストールするのは大変なので, package.configに直接以下を書き込む

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <!--単体テストプロジェクトにデフォルトで入っている項目-->
  <package id="MSTest.TestAdapter" version="1.2.1" targetFramework="net461" />
  <package id="MSTest.TestFramework" version="1.2.1" targetFramework="net461" />
  <!--追加した項目-->
  <package id="Selenium.Firefox.WebDriver" version="0.20.0" targetFramework="net461" />
  <package id="Selenium.PhantomJS.WebDriver" version="2.1.1" targetFramework="net461" />
  <package id="Selenium.Support" version="3.12.0" targetFramework="net461" />
  <package id="Selenium.WebDriver" version="3.12.0" targetFramework="net461" />
  <package id="Selenium.WebDriver.ChromeDriver" version="2.38.0.1" targetFramework="net461" />
  <package id="Selenium.WebDriver.IEDriver" version="3.12.0" targetFramework="net461" />
  <package id="Selenium.WebDriver.MicrosoftWebDriver" version="10.0.17134" targetFramework="net461" />
</packages>

3. 「Nugetパッケージの復元」をする

ソリューションエクスプローラ内の「ソリューション」を右クリックして「Nugetパッケージの復元」を実行

しかしこのままだとまだ参照されていないのが分かる.

以下がパッケージロードのテスト用コード.

これがエラーなくコンパイルできればいいのだが。

このままだと赤線がでてコンパイルできない.

using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;

// Selenium関連パッケージ
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Edge;
using OpenQA.Selenium.Firefox;
using OpenQA.Selenium.IE;
using OpenQA.Selenium.PhantomJS;
using OpenQA.Selenium.Support.Extensions;
using OpenQA.Selenium.Support.UI;


namespace SeleniumBoilerplate
{
    [TestClass]
    public class BrowserTest
    {
        [TestMethod]
        public void TestChromeDriver()
        {
            using (IWebDriver driver = new ChromeDriver())
            {
            }
        }

        [TestMethod]
        public void TestFirefoxDriver()
        {
            using (IWebDriver driver = new FirefoxDriver())
            {
            }
        }

        [TestMethod]
        public void TestEdgeDriver()
        {
            using (IWebDriver driver = new EdgeDriver())
            {
            }
        }

        [TestMethod]
        public void TestPhantomJSDriver()
        {
            using (IWebDriver driver = new PhantomJSDriver())
            {
            }
        }
    }
}

package.configをPackageRefferenceに移行する

ソリューションエクスプローラの「参照」を右クリックし、「package.configをPackageReferenceに移行する」を実行

f:id:hope_is_dream:20181203212353p:plain

すると、参照内のパッケージにpackage.configに記載されたパッケージがかわいいアイコンで現れる

すると先ほどまでパッケージインポートエラーが出ていた、selenium関連のパッケージがインポートできているのが分かるであろう。

テストを実行すると、環境にインストールされているブラウザでテストが合格するだろう. 特に今回はPhantomJSのテストがクリアされていれば、目的達成!

f:id:hope_is_dream:20181203212407p:plain

まとめ

C#.NETでSelenium関連パッケージの動作環境を整えた.

特にPhantomJSの動作環境が整った.

Selenium実践入門 ―― 自動化による継続的なブラウザテスト (WEB+DB PRESS plus)

Selenium実践入門 ―― 自動化による継続的なブラウザテスト (WEB+DB PRESS plus)

この参考書はとてもためになります。 体系的な資料は少ないので一読オススメです。

下のは古いヴァージョンの話です、おすすめしません。

実践 Selenium WebDriver

実践 Selenium WebDriver