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