LoginSignup
97
102

More than 5 years have passed since last update.

Seleniumコマンドチートシート【Ruby】

Last updated at Posted at 2017-09-19

公式リファレンス

ruby
# Chrome用のドライバを指定
d = Selenium::WebDriver.for :chrome

# 要素を検索(最初に見つかった要素を返す)
e = d.find_element(:id => "hoge")

ドライバ操作

d はdriverのインスタンス
e はfind_elementで取得した要素

command explain example
get 指定したURLにアクセス d.get "http://google.com"
current_url ページのURLを取得 d.current_url
titile ページタイトルを取得 d.title
page_source ページのソースを取得 d.page_source
navigate.back ブラウザバック d.navigate.back
navigate.forward ブラウザフォアード d.navigate.forward
navigate.reload ページリロード d.navigate.reload
navigate.to ページ移動(内部でgetをcall) d.navigate.to "http://google.com"
execute_script javascriptを実行 d.execute_script("alert()")
save_screenshot スクリーンショットを撮影 d.save_screenshot "path/to/a.png"
manage.timeouts.implicit_wait 要素を検索する際のタイムアウト(秒) d.manage.timeouts.implicit_wait = 5
mouse.move_by マウスポインタを指定座標に移動(hover) d.mouse.move_to(x,y)
mouse.move_to マウスポインタを指定したエレメントへ移動(hover) d.mouse.move_to(e)

要素の操作

command explain example
find_element(:id, "hoge") 要素検索(最初にヒットした要素を返す) e = d.find_element(:id, "ID名")
find_element(:class, 'fuga') 要素検索(最初にヒットした要素を返す) e = d.find_element(:class, 'クラス名')
find_element(:css, 'piyo') 要素検索(最初にヒットした要素を返す) e = d.find_element(:css, 'cssセレクタ')
find_element(:link, 'hoge') 要素検索(最初にヒットした要素を返す) e = d.find_element(:link, 'aタグのテキスト')
find_element(:name, 'fuga') 要素検索(最初にヒットした要素を返す) e = d.find_element(:name, 'name')
find_element(:tag_name, 'piyo') 要素検索(最初にヒットした要素を返す) e = d.find_element(:tag_name, 'tag name')
find_element(:xpath, 'xpath') 要素検索(最初にヒットした要素を返す) e = d.find_element(:xpath, 'xpath')
find_elements(:class => "hoge") 要素検索(全ての要素を配列で返す) e = d.find_elements(:class => "hoge")
rect.x 要素のrectを取得(x, y, width, height) e.rect.x
tag_name タグを取得 e.tag_name
click 要素をクリック e.click
submit 要素をサブミット e.submit

サクッと要素を取得したい時

ChromeのDeveloperToolを開いて
[要素をクリック]→[右クリック]→[copy]→[Copy Xpath]

ruby
# googleの検索ボタンをクリックするサンプル
d.find_element(:xpath, '//*[@id="fkbx"]').click

大体はこれで事足ります

Waitの設定

動的に生成される要素の操作などに役立つ

ruby
wait = Selenium::WebDriver::Wait.new(:timeout => 5) # seconds
begin
  element = wait.until { driver.find_element(:id => "dynamic-element") }
ensure
  driver.quit
end
97
102
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
97
102