RubyのSeleniumでログイン済みプロファイルを使用する

こんにちは。
前回簡単なSelenium入門をしてみましたが、Seleniumを使っているときに困るのが、ログインをしなければならないサイトをスクレイピングしたりテストを通したいときです。
ログイン処理を何度もまわせばいいのですが、開発途中のプログラムの場合だと短時間に何度も何度もログイン処理をまわすことになり、色々大変です。

そこでログイン処理を省き、通常使っているようにログイン済みのブラウザを使えれば便利ですよね。
Seleniumにはもちろんそういうことも考えられていて、それを設定することがあります。
今回はその設定方法を書いていきます。

Firefoxの設定をする

それではFirefoxの設定をしていきましょう。
Firefoxにはデフォルトでプロファイルが設定されていて、それを設定するとプログラムから使うように出来ます。

それでは設定していきましょう。

といってもとても簡単です。
MacOSX前提で話していますが、以下のコマンドをターミナルから入力してください。

$ /Applications/Firefox.app/Contents/MacOS/firefox-bin -p

そうすると以下のような画面が開くので、新規作成を押しましょう。

プロファイルの名前を決定する画面があるのでそこで決定をクリックすると、その名前のプロファイルが作成されます。
あとはそのプロファイルを選択して、「Firefoxを起動」をクリックし、ログインが必要なサイトで予めログインを完了させておけば完璧です!

今回はプロファイルをちゃんと設定出来たかと確認するために、作ったプロファイルでTwitterにログインしておいてください。

Seleniumから動かしてみる

それでは設定したプロファイルをプログラムから渡してみましょう。

コードは以下のような感じです。

default_profile = Selenium::WebDriver::Firefox::Profile.from_name "auto"
default_profile.native_events = true

driver = Selenium::WebDriver.for :firefox, :profile => default_profile

driver.navigate.to 'http://twitter.com'

こんな感じで使うプロファイル情報を定義してあげて、WebDriverを呼び出すときに変数として渡してあげればそれでOKです!
ログイン後のTwitter画面は出てきましたか?出てきたら成功です!

最後に

SeleniumってPHPで動かそうとしてたときはとても苦労した記憶があったのですが、Rubyだと超楽ですね!
これでいっぱいテストが書ける気がしてきましたw

そろそろやり始めます。

たのしいRuby 第4版

posted with amazlet at 14.01.05
高橋 征義 後藤 裕蔵
ソフトバンククリエイティブ
売り上げランキング: 25,239