参考サイト
gemをインストールする。
1
| gem install selenium-webdriver
|
起動と終了
1
2
3
| driver = Selenium::WebDriver.for :firefox # ブラウザ起動
driver.quit # ブラウザ終了
|
:firefox のところは :ieとか:chromeとか:operaとか好きなのを
ページ、フレーム移動
1
2
3
| driver.navigate.to 'http://example.com' # URLを開く
driver.switch_to.frame(1) # 1つめの子フレームに移動
driver.switch_to.frame("frameid") # フレームのnameを指定して移動
|
要素を指定
1
2
3
4
5
6
| element = driver.find_element(:name, 'calendar') # nameで指定
element = driver.find_element(:id, 'calendar') # idで指定
element = driver.find_element(:class, 'right_box') # classで指定
element = element.find_element(:tag_name, 'table') # 要素名で指定
element = element.find_element(:xpath, 'tr[2]/td[3]/a') # XPathで指定
element = driver.find_element(:class, 'body').find_element(:name, 'form').find_elements(:xpath, './/input')[2] # メソッドチェーン
|
DriverとElementがどちらもfindelement・findelementsメソッドを持っている。
入力
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| # テキストフィールドへ入力・削除
element = driver.find_element(:name, 'userId')
element.send_keys('username')
element.clear
# ドロップダウンリスト選択
select = Selenium::WebDriver::Support::Select.new(driver.find_element(:id, 'dropdown'))
select.select_by(:value, 'item1') # valueの値で選択
select.select_by(:text, 'どちらでもない') # 表示テキストで選択
select.select_by(:index, 2) # インデックス(0始まり)で選択
# ラジオボタン選択
driver.find_elements(:name, 'selectOne')[2].click
# リンクやボタンを押す
driver.find_element(:xpath, '//table[2]/tr[3]/td[1]/a').click
|
情報取得
1
2
3
4
5
6
7
8
9
10
11
12
13
| # 要素の内容テキスト
puts element.text
# Firefoxでダウンロードのリンクを踏んだとき保存確認ダイアログを出さずに指定のフォルダに保存
profile = Selenium::WebDriver::Firefox::Profile.new
profile['browser.download.folderList'] = 2
profile['browser.download.useDownloadDir'] = true
profile['browser.download.dir'] = 'path/to/downloadFolder'
profile['browser.helperApps.neverAsk.saveToDisk'] = 'text/csv'
driver = Selenium::WebDriver.for :firefox, :profile => profile
# スクリーンショットを撮る
driver.save_screenshot('path/to/filename.png')
|
chomeのプロフィール設定
1
2
3
4
5
6
7
8
| prefs = {
:download => {
:prompt_for_download => false,
:default_directory => "/path/to/dir"
}
}
driver = Selenium::WebDriver.for :chrome, :prefs => prefs
|
macでchromeを指定するとエラーが出たので対応
ドライバーをダウンロードしてくる
http://chromedriver.storage.googleapis.com/index.html
ドライバにバスを通す
1
| ln -s /path/to/chromedriver /usr/bin/chromedriver
|
とりあえず /user/bin/にシンボリックリンクを貼った
直接パス通す方法でもOK