読者です 読者をやめる 読者になる 読者になる

AB Lab

プログラミング備忘録

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

参考サイト

gemをインストールする。

gem install selenium-webdriver

起動と終了

driver = Selenium::WebDriver.for :firefox # ブラウザ起動

driver.quit # ブラウザ終了

:firefox のところは :ieとか:chromeとか:operaとか好きなのを

ページ、フレーム移動

driver.navigate.to 'http://example.com' # URLを開く
driver.switch_to.frame(1)               # 1つめの子フレームに移動
driver.switch_to.frame("frameid")       # フレームのnameを指定して移動

要素を指定

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がどちらもfind_element・find_elementsメソッドを持っている。

入力

# テキストフィールドへ入力・削除
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

情報取得

# 要素の内容テキスト
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のプロフィール設定

prefs = {
  :download => {
    :prompt_for_download => false, 
    :default_directory => "/path/to/dir"
  }
}

driver = Selenium::WebDriver.for :chrome, :prefs => prefs

macchromeを指定するとエラーが出たので対応

ドライバーをダウンロードしてくる

http://chromedriver.storage.googleapis.com/index.html

ドライバにバスを通す

ln -s /path/to/chromedriver /usr/bin/chromedriver

とりあえず /user/bin/にシンボリックリンクを貼った 直接パス通す方法でもOK