参考:
- https://morizyun.github.io/web/selenium-cheat-sheet.html
- https://qiita.com/yulily@github/items/c3edbe25e84280c17776
準備
gemをインストール
Gemfile
gem "selenium-webdriver" #アクセス用
gem "pry-byebug" #デバッグ用
$ bundle install
ミニマムに実行してみる
必要なgemをrequire
require "selenium-webdriver"
require 'pry'
Chrome用ドライバオブジェクト取得
driver = Selenium::WebDriver.for :chrome
URLにアクセス
driver.navigate.to "https://www.google.co.jp/"
name= "q"要素を取得
検索formインプット部分
inputElement = driver.find_element(:name, 'q')
取得要素に検索ワードを設定
formに値が指定される
inputElement.send_keys "パンケーキ"
ボタンを探してきて、サーチする
buttonは2つあるので、"Google検索"の方を選択。(もう一方のボタンは"btnI")
submitElement = driver.find_element(:name, 'btnK')
submitElement.click
# inputElement.submit これだけでも良い
ドライバは終わったら必ず閉じる
driver.quit
入門
このサイトから”ペッシェドーロ東戸塚”を取ってくるhttps://r.gnavi.co.jp/city/kanagawa/cwtav2440000/pancake/rs/
“パンケーキ”の検索結果は、div.r > aの10件のリンク
find_elementメソッドは最初にヒットしたエレメントを取得
(全件ならfind_elements)
search = driver.find_element(:css, "div.r>a")
search.click
店名は a.result-cassette__box-title に入っている
content = driver.find_element(:css, "a.result-cassette__box-title")
puts content.text
最終的なコード
sele.rb
require "selenium-webdriver"
require 'pry'
# Chrome用のドライバを指定
driver = Selenium::WebDriver.for :chrome
# Google検索にアクセス
driver.navigate.to "https://www.google.co.jp/"
# name属性にqが設定されている要素を取得
inputElement = driver.find_element(:name, 'q')
#
# # 取得した要素にパンケーキを設定
inputElement.send_keys "パンケーキ"
# ボタンを探してきて、サーチする(ボタンは2つあるので)
# submitElement = driver.find_element(:name, 'btnK')
# submitElement.click
inputElement.submit #これだけでも良い
#検索結果の最初の一件を取得
search = driver.find_element(:css, "div.r a")
search.click
#店名を取得
content = driver.find_element(:css, "a.result-cassette__box-title")
puts content.text
#閉じる
driver.quit
結果
$ ruby sele.rb
> ペッシェドーロ 東戸塚
できた!!!