今回はSelenium Web Driverを使用してChromeのUser-Agentをスマホ(iPhone, Android)に設定してWebブラウザを自動操作するC#のサンプルプログラムを紹介します。
1.ソリューションの作成
何はともあれ、まずはVisual Studioからソリューションを作成します。とりあえず「コンソールアプリケーション」として作成します。
2.Selenium Web Driverのインストール
Nugetから必要なモジュールをインストールします、[ツール] – [ライブラリパッケージマネージャー]-[パッケージマネージャーコンソール]から以下のコマンドを実行します。
Install-Package Selenium.WebDriver
3.Selenium Chrome Driverのインストール
Chrome DriverはNugetで公開されていないので、Webからダウンロードする必要があります。以下のURLで公開されているので、「selenium-dotnet-X.X.XX.zip」(2012/12/22時点で2.28.0)をダウンロードします。
http://code.google.com/p/selenium/downloads/list
4.chromedriver.exeをプロジェクトに配置
ダウンロードした「selenium-dotnet.X.X.XX.zip」を解凍すると「chromedriver.exe」が展開されるので、プロジェクトに含めます。そしてビルド時に出力ディレクトリにコピーされるようにします。
5.Chrome起動
Chromeを起動するプログラムを記述します。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
namespace SeleniumChromeSample
{
class Program
{
static void Main(string[] args)
{
IWebDriver browser = new ChromeDriver();
browser.Url = "http://www.google.co.jp";
}
}
}
ほぼ説明は不要だと思います。ChromeDriverのインスタンスを生成して、Urlプロパティに表示したいUrlをセットするだけです。ChromeDriverのインスタンス生成時にブラウザが起動し、Urlプロパティを変更した時点で画面遷移が行われます。
5.Chromeをスマホとして起動
最後に、ChromeのUser-Agent文字列をAndroidに設定して起動します。例としてGALAXY NEXUSとして起動させます。
static void Main(string[] args)
{
var option = new ChromeOptions();
option.AddArgument("–user-agent=\"Mozilla/5.0 (Linux; U; Android 4.0.2; en-us; Galaxy Nexus Build/ICL53F) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30\"");
IWebDriver browser = new ChromeDriver(option);
browser.Url = http://www.google.co.jp;
}
ChromeOptionクラスのAddArgumentにUser-Agent文字列を設定し、ChromeDriverのコンストラクタにChromeOptionを設定します。iPhoneの場合は以下の文字列を設定しします。
Mozilla/5.0 (iPhone; CPU iPhone OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A334 Safari/7534.48.3
このプログラムを実行すると、以下のようにモバイルモードでGoogleトップページが表示されます。
今回作成したサンプルコードは、こちらで公開しています。次回はテキストの入力、オブジェクトのクリックなどの操作を行っていこうと思います。
今回のブログエントリの作成にあたって、Selenium Web Driverの情報は以下のサイトを参考にさせていただきました。
http://www.slideshare.net/odashinsuke/selenium-webdriver-12311228#btnNext
http://www.storklab.com/seleniumhq.org/docs/03_webdriver.html