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

[公式リファレンス](http://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver)


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

大体はこれで事足ります

## Waitの設定

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

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