ubuntuでSelenium2を使ったIEブラウザテスト
まずubuntu環境にVirtualBoxとModernIEをインストールします
VirtualBoxインストール
sudo apt-get update
sudo apt-get install virtualbox
ModernIEインストール
Modern.IEは90日間無償で利用できる、IEテスト用のVMイメージです。
ライセンスが切れたら削除して再度ダウンロードしてくる必要があります。
なので、Modern.IEを利用するために必要なことは手順書として残しておいたほうがよさそうです。
日本語化する
ubuntuからVirtualBoxに接続するための設定
- ファイル > 環境設定 > ネットワーク > ホストオンリーネットワークを追加
- 設定 > ネットワーク > アダプター2でホストオンリーアダプタを設定すると先ほど追加したネットワークが名前の箇所に自動で割り当てられる
- ipconfigで192.168.xxx.xxxが割り当てられていれば成功です。
ubuntuに存在するテストコードからModern.IEのブラウザを起動させるためSelenium Standalone Serverを構築する
- Modern.IE環境にて、Selenium Standalone Serverを任意の場所にダウンロード(http://www.seleniumhq.org/download/)
- Selenium Standalone Serverをダウンロードした同じ場所にThe Internet Explorer Driver Serverをダウンロードする
- 起動コマンド。リッスンポートを4444にした
java -jar selenium-server-standalone-2.46.0.jar -Dwebdriver.ie.driver=./IEDriverServer.exe -p 4444 > ./active.log 2> error.log
ファイアーウォールにポート4444のアクセス許可を追加
- コントロールパネル > システムとセキュリティ > Windowsファイアウォール > 詳細設定
- 受信の規則画面で、新しい規則をクリックし、ポートにチェック、TCPを選択し、特定のローカルポートに4444を指定して適当な名前をつけて保存。
ubuntuに存在するテストコードからModern.IEのブラウザを起動させてテストする
ログインテストを行う処理です。ieドライバーを利用するように設定します。
spec/features/login/login_spec.rb
describe 'ログイン管理' do
before :each do
# IEドライバーを利用するように設定。このあとのsetup_utility.rbのsetup_ieを実行します。
@driver = SetupUtility.setup_ie wait_time: 30
# ページインスタンスの用意
@private_login_page = PrivateLoginPage.new(@driver)
# オペレータの用意
@login_op = LoginOperator.new(@driver)
@entry_op = EntryOperator.new(@driver)
@front_op = FrontBlogOperator.new(@driver)
# ページを開く
@private_login_page.open
end
after :each do
@driver.quit
end
describe "ログイン:Private" do
〜〜 省略 〜〜
ログインテストから実行され、各種ドライバーをセットアップする処理です。
IEのドライバをセットアップする箇所のみ記載しています。
spec/support/selenium/setup_utility.rb
# IEのドライバをセットアップする
def setup_ie(args)
# タイムアウト設定
$implicit_wait_time = args[:wait_time] || 30
# IEドライバーを設定
capabilities = Selenium::WebDriver::Remote::Capabilities.ie
# ドライバを生成します。192のIPは先程Modern.IEでipconfigで確認したものを設定します。
# 4444はSelenium Standalone Serverがリッスンしているポートです。
# /wd/hubはSeleniumサイトのドキュメントに記載している通りに指定しています。
driver = Selenium::WebDriver.for :remote,
:url => 'http://192.168.56.101:4444/wd/hub',
:desired_capabilities => :ie
# タイムアウト時間を設定する
driver.manage.timeouts.implicit_wait = $implicit_wait_time
return driver
end
こんな感じです。これでIEの自動テストもバッチリ!かも。