2018年2月8日木曜日

Ruby で Selenium を使ってみた

概要

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 件のコメント:

コメントを投稿