Tbpgr Blog

Recruiting Operations tbpgr(てぃーびー) のブログ

Selenium | RubyでSeleniumによるページ操作の検証を効率よく行う手順

概要

RubySeleniumによるページ操作の検証を効率よく行う手順

詳細

RubySeleniumによるページ操作の検証を効率よく行う手順について。
※この話はWatir等他のブラウザ操作系のツール利用時も同様

SeleniumによるUIテストや自動化のプログラムを作成する際、毎回本物のソースコード
動作確認をしていると、ブラウザの起動から操作手順を順に追って確認することになります。
ブラウザ起動時間や操作時間もばかにならないため、この方法だと実装に非常に時間がかかります。

特にSeleniumに習熟するまでの間は各メソッドが正しく動作するかどうか
試行錯誤の場面が多いかと思います。

そのような場合はpryで動作確認を行い、確認できたものを実コードに反映していく方法が
便利です。この方法だとブラウザを上げたままさくさくと確認できます。
irbでもいいですけど

マルチディスプレイ

上記作業時にマルチディスプレイを利用して
・片方はpryによるselenium経由の操作検証用
・もう片方はhtmlやcssの要素の調査や画面の手動操作による確認のために別のブラウザを表示しておく
(この際、各社ブラウザに付属しているDevelopmentTool類を開いておくと便利)
ようにすると作業がはかどります。

GreaseMonkey

自分の管轄外のサイトの自動化などをしている場合、該当サイトが右クリックなどを
封じているなど、作業の障壁が存在する場合があります。
その場合は、GreaseMonkeyを利用して無理矢理右クリック可能に変更してしまいましょう。
JavaScriptで対応できることならなんとか出来る)

検証サンプル(pry + powershell環境で試行)

「Tbpg's Programming memo」でGoogle検索する手順を入力しました

[2] pry(main)> require "selenium-webdriver"
=> true
[3] pry(main)> driver = Selenium::WebDriver.for :firefox
=> #<Selenium::WebDriver::Driver:0x..fc5de630e browser=:firefox>
[4] pry(main)> driver.get "https://www.google.co.jp/"
=> ""
[5] pry(main)> search_input = driver.find_element(:name, "q")
=> #<Selenium::WebDriver::Element:0x75af22ea id="{954e7ac2-0bce-43e0-85a5-47634531f3be}">
[15] pry(main)> search_input.send_keys("Tbpg's Programming memo")
=> ""
[16] pry(main)> driver.find_element(:xpath, "//input[@name='btnK']").click