概要
Ruby で Selenium を使ってブラウザ操作をしてみました
環境
- macOS 10.13.2
- Ruby 2.4.1p111
- selenium-webdriver 3.9.0
- geckodriver 0.19.1
geckodriver のインストール
- brew install geckodriver
とりあえずサンプルコード
- vim access_google.rb
require "selenium-webdriver"
driver = Selenium::WebDriver.for :firefox
driver.navigate.to "http://google.com"
element = driver.find_element(name: 'q')
element.send_keys "Hello WebDriver!"
element.submit
sleep 10
puts driver.title
driver.quit
ヘッドレスブラウザっぽいです
検索のテキストボックスに「Hello WebDriver!」と入力し Enter を押して検索しています
検索結果の画面のタイトルバーからタイトルを取得して終了です
基本的には find_element でテキストボックスなりボタンを取得して入力したりクリックしたりすれば操作できると思います
よく使いそうなテクニック
クリックする
element.click
タグ名で検索する
driver.find_element(:tag_name, 'input')
CSS セレクタを直接使う
属性の比較は完全一致や部分一致、前方一致などが使用できる
driver.find_element(:css, 'input[onclick*="552777"]')
おまけ
ブラウザで実際に要素が検索できるかどうか試したい場合があると思います
そんな場合は Chrome の Console 機能などを使うと簡単に検索できます
例えば今回の driver.find_element(name: 'q')
は CSS セレクタを使って $$('[name=q]');
という感じで検索できます
class 属性で検索したい場合は $$('.srp');
のようにドットで検索し id 属性を検索した場合は $$('#doc-info');
という感じでシャープを使って検索します
その他のCSS セレクタの検索テクニックはこちらを参考にしてみてください
xpath を使って要素情報を取得することも可能です
最後に
Ruby で Selenium を使ってブラウザ操作をしてみました
とりあえずローカルで動かすのであれば簡単にできます
次回は selenium server を別途構築してそこでブラウザを動かす方法を紹介したいと思います
0 件のコメント:
コメントを投稿