Seleniumのインストールと簡単な使い方
参考サイト
- http://daipresents.com/2012/webdriver%E3%81%A7chrome%E3%82%92%E8%B5%B7%E5%8B%95%E3%81%99%E3%82%8B%E3%81%A8unable-to-find-the-chromedriver-executable%E3%81%A8%E6%80%92%E3%82%89%E3%82%8C%E3%81%9F/
- http://morizyun.github.io/blog/selenium-scraping-webdriver-ruby/
- http://qiita.com/tomerun/items/9cb81d7a98150ff22f53
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
macでchromeを指定するとエラーが出たので対応
ドライバーをダウンロードしてくる
http://chromedriver.storage.googleapis.com/index.html
ドライバにバスを通す
ln -s /path/to/chromedriver /usr/bin/chromedriver
とりあえず /user/bin/にシンボリックリンクを貼った 直接パス通す方法でもOK