スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

SeleniumとFireMobileSimulatorの連携

SeleniumのUIテストをFireFoxのFireMobileSimulatorが適用された状態で実行する方法を紹介します。
FireMobileSimulatorを適用する事でスマートフォンサイトのUIテストが実際の端末の画面表示に近い結果で行う事ができます。

■環境
Windows 7
Firefox バージョン26.0
Selenium バージョン2.39.0

■方法
FireMobileSimulator等の拡張機能の設定は、Firefoxのプロファイルに保存されます。
Seleniumで何の設定もせずにWebDriverを実行するとSelenium専用のプロファイルが作成される為、FireMobileSimulatorの設定引き継がれずにUIテストを実行してしまいます。
WebDriverに対して、実行時に使用するプロファイルを指定する事でFireMobileSimulatorの設定を引き継ぐ事ができます。

1.Selenium専用のプロファイル作成
Selenium専用のプロファイル設定を作成する事で、通常のブラウザ利用のプロファイルとUIテスト用のプロファイルを別の設定で行えるようにします。

Windowsのスタートボタン→プログラムとファイルの検索ボックスに「firefox.exe -p」と入力し、プロファイルマネージャを起動します。
(Windows XP の場合は、スタート ボタンをクリックし、ファイル名を指定して実行... を選択)

「新しいプロファイルを作成...」をクリックして、プロファイル名を入力してプロファイルを作成します。
今回は「Selenium」というプロファイル名で作成しました。
profile_manager.png

2.Firefoxの起動
先ほどのプロファイルマネージャからdefaultのプロファイルを選択して「Firefoxの起動」ボタンをクリックしてFirefoxを起動します。
(ちなみに、この時点で先ほど作成したSeleniumのプロファイルでFirefoxを起動するとインストールしたプラグイン等が存在しない初期状態でFirefoxが起動します。)

3.FireMobileSimulatorの設定
起動したFirefoxにてFireMobileSimulatorを有効にし、特定の端末を選択した状態で、適当なサイトを表示します。
(サイトの表示はFireMobileSimulatorが適用されたか確認する為)

4.WebDriverのプロファイル指定(default)
Firefoxの「ヘルプ」メニュー→「トラブルシューティング情報...」を選択します。
以下のような画面が表示されるのでプロファイルフォルダ項目の「フォルダを開く」ボタンをクリックするとdefaultプロファイルのフォルダがエクスプローラで表示されます。

troubleshooting.png

私のPC環境では以下のパスでした。

C:\Users\ユーザ名\AppData\Roaming\Mozilla\Firefox\Profiles\dy1zzs43.default


続いてテストケースのWebDriverにdefaultプロファイルを指定し、FireMobileSimulatorが適用された状態でUIテストが行えるか確認します。
以下のように、テストコードで先ほど取得したdefaultプロファイルのパスを設定します。

@Before
public void setUp() throws Exception {
File file = new File("C:/Users/ユーザ名/AppData/Roaming/Mozilla/Firefox/Profiles/\dy1zzs43.default");
FirefoxProfile profile = new FirefoxProfile(file);

driver = new FirefoxDriver(profile);
}

青色フォントの部分が追加したコードです。
Fileのインスタンスを指定しFirefoxProfileインスタンスを生成し、こちらをWebDriverのコンストラクタに指定する事でプロファイルの設定が行えます。

4.UIテスト実行(defaultプロファイル)
この状態で現在のFirefoxのプロファイル(すなわち、FireMobileSimulaorが適用された状態)でUIテストを実行する事ができるようになりました。
早速、Eclipse等からUIテストのテストケースを実行します。

テストケースが起動するブラウザにFireMobileSimulatorが適用されているか確認します。
たまに、プロファイルが更新されてなくて、FireMobileSimulatorが適用されていない場合があるので、その時は、再度、手動でFirefoxを起動してFireMobileSimulatorを適用した状態でタブを増やしたり、ブラウザを閉じたりしてみてください(そうすれば、Firefoxがプロファイルを保存してくれるはず)。

5.プロファイルのコピー
SeleniumのテストでFireMobileSimulatorが適用されているのが確認できたら、defaultプロファイルを最初に作成したSeleniumプロファイルにコピーします。

「C:\Users\ユーザ名\AppData\Roaming\Mozilla\Firefox\Profiles\dy1zzs43.default」フォルダ配下のファイルとフォルダを全てコピーし、Seleniumプロファイルのディレクトリ配下に全て上書きします。
Seleniumプロファイルのディレクトは、defaultプロファイルのディレクトリが存在する場所と同じ階層にあります。
フォルダ名が「xxxxx.Selenium」となっているはずです。

私のPC環境では以下のパスでした。

C:\Users\ユーザ名\AppData\Roaming\Mozilla\Firefox\Profiles\bkjbp0fr.Selenium

6.UIテスト実行(Seleniumプロファイル)
プロファイルのコピーが完了したら、テストコードを変更し、WebDriverのプロファイルの設定をSeleniumプロファイルに変更します。

@Before
public void setUp() throws Exception {
File file = new File("C:/Users/ユーザ名/AppData/Roaming/Mozilla/Firefox/Profiles/\bkjbp0fr.Selenium");
FirefoxProfile profile = new FirefoxProfile(file);
driver = new FirefoxDriver(profile);
}

テストコードを変更したら、再度、テストケースを実行します。

起動するブラウザにFireMobileSimulatorが適用されている事を確認してください。
適用できている事が確認できたら、手動でFirefoxを起動し、FireMobileSimulatorを解除してください。
そのあと、UIテストを実行してみてもFireMobileSimulatorが適用された状態でブラウザが起動するはずです。
(Seleniumプロファイルが有効になっている為)

手順は以上です。

■おまけ
ちなみにFireMobileSimulatorの設定が、プロファイルのどのファイルに保存されているのかを探したところ、プロファイルのフォルダ内にある「prefs.js」に保存されている事がわかりました。
FireMobileSimulatorが適用されている状態だとファイル内に以下のようなエントリが存在します。

user_pref("msim.current.carrier", "SB");
user_pref("msim.current.id", "1");

シミュレータで選択している端末とキャリアのエントリです。
数値の部分は、FireMobileSimulatorで何番目の端末を選択しているかを表しているようです。

もし、Seleniumの設定でうまくいかない場合は、こちらのファイルの内容も確認してみるとよいでしょう。

■参考
mozilla support - プロファイルの管理
スポンサーサイト
プロフィール

まこち

Author:まこち
スマートフォンのアプリ開発やWebサイト構築等を仕事や趣味でやっています。
最近はグラフデータベースも始めました。

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。