AB Lab

abgata20000 blog.

Seleniumのインストールと簡単な使い方

参考サイト

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