Ruby
Chrome
Selenium
selenium-webdriver

Rubyでsleniumを使ったときにハマったところ

簡単に、ハマった箇所をまとめていく。

■ リンクを新規タブで開きたい(target_blankではない)

@driver.action.send_keys(:command).click(element).perform

動作としてはactionクラスに動作を覚えさせながら、
「command + クリック」と同じ動作を実現させている。

■ Action Chains(actionクラスを使って複数動作を実現する)

driver.action.send_keys(:command).click(element).perform

actionに対して、させたい動作を付け足していって、最後にperformで実行する。
これはactionクラスを使うと複数動作を実現できるもの。(shift押しながら〜とか、command押しながら〜とか)
設定するkeyは、MacやWindowsのキーボードに依存するみたい。

■ 画面のハンドルの移動

window = driver.window_handles.last # 最後に開いたタブのwindowハンドルを取得
driver.switch_to.window(window) # windowのハンドルを切り替える

新規で開いたタブは開かれても操作自体は元の画面に残っている。
操作したい画面に対してハンドルを移してやる必要がある。

■ 新規タブを閉じて元の画面にハンドルを戻す

driver.close

タブを閉じれば、元の画面に勝手にハンドルが戻る。(2タブしか開いていない場合)

■ seleniumのelement情報

ページ遷移すると取得したelement情報は変わってしまうため、複数のelementを繰り返し使う場合は都度取得し直すか、処理するページを新規タブで開くなどしておく必要があった。