macOS Ruby で Selenium WebDriver の利用準備、覚書

Selenium IDE で特定の操作をしながらスクリーンショットを撮ることがしたいなと思ったのですが、chrome のアドオンではうまく行かず、、captureEntirePageScreenshot コマンドがどうしてもエラーになる。

色々と調べた結果バージョンアップで使えなくなったとかなんとか。使えるのかどうかまったくわからなかったので、普通に Selenium WebDriver を使うことにしました。

WebDriver のインストールでパーミッションエラー

$ gem install selenium-webdriver

としたところ、

ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions for the /Library/Ruby/Gems/2.3.0 directory.

いきなりパーミッションエラーで怒られました。1手目でいきなりひどい。

まずは Ruby の環境構築

新しい MacBook だったのでデフォルトの状態です。まずは Ruby の環境構築からやった方がいいと思いまして色々と必要なものをインストールしました。

1.Homebrew のインストール

$ which brew

として、Homebrew がインストールされていないことを確認。最新の Homebrew をインストールします。

昔記事(ffmpeg を Homebrew からインストール。)で書いていたけどすっかり忘れてた、ダウンロード先の URL が最新かどうか公式でチェックした方が良い。
参考:The missing package manager for macOS — The missing package manager for macOS

$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

とすると、モリモリインストールなりが始まりますが、途中 Command Line Tools のダウンロード〜インストールなども挟むので5分くらいは掛かったかも?

2.rbenv および ruby-build をインストール

$ brew install rbenv ruby-build

3.rbenv の設定

rbenv の初期化スクリプトを .bash_profile へ追加するその前に、.bash_profile と呼ばれる設定ファイルがホームディレクトリに存在していないことがわかったので作成します。

$ touch .bash_profile

.bash_profile に下記おまじないを書き込んで・・

$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile

source コマンドで現在の bash に設定ファイルを反映させたあと、バージョンを確認。

$ source ~/.bash_profile
$ rbenv --version
rbenv 1.1.1

4.最新の Ruby インストール

現在利用している Ruby のバージョンを一応確認しておきます。

$ ruby -v
ruby 2.3.7p456 (2018-03-28 revision 63024) [universal.x86_64-darwin17]

インストールできるversionの一覧を表示させてその中から最新の安定版を選択

$ rbenv install -l

インストール

$ rbenv install 2.5.1

このままだと 2.3.7 のままなので、rbenv rehash コマンドで Ruby 2.5.1 を利用できる状態にし、デフォルトでどのバージョンの Ruby を用いるかを rbenv global [version] で設定する。

$ rbenv rehash
$ rbenv global 2.5.1
$ ruby -v
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin17]
追記:2020/03/11

何故かうまくバージョンが切り替わらなかった、が、下記を試すことで切り替わるようになりました。

rbenv local –unset
ディレクトリ固有のRubyバージョンを指定しているわけではないものの、一応ローカルのバージョン設定を破棄してみる。

$ rbenv local –unset
$ rbenv rehash
当たり前ですが変化なし。

rbenvでバージョンがうまく切り替わらなかった時にやったこと – Qiita

「当たり前だけど変化しない」と言われましたが、何故かうまくいきました。

※ ruby 2.7.0

Selenium-WebDriver のインストール

さて、ここまで来たら冒頭で失敗した selenium-webdriver のインストールを試してみると、無事にインストールできました。

$ gem install selenium-webdriver
$ gem list
(中略)
selenium-webdriver (3.14.0)
(中略)

冒頭で失敗した際に、sudo すればインストール出来たかもしれないですが、なんだかそれだと無理矢理感がありイマイチな気がしますので、この方法で良しとします。

ブラウザ geckodriver の用意

次に、ブラウザの役割をするものとして geckodriver を用意します。
参考:Releases · mozilla/geckodriver

こちらから macOS 用のものをダウンロードし解凍したものをパスが通っている場所に設置する必要がある、と。現在のパスはどうなっているかを確認します。

$ echo $PATH
/Users/{username}/.rbenv/shims:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

rbenv を入れたから?.rbenv/shims が優先となっている様子。ま、、これの何処に geckodriver を置いたら良いのかはいまいちピンと来ていませんが、/usr/local/bin 辺りが良さそう。
参考:PATHを通すとは? (Mac OS X) – Qiita

$ mv /Users/{username}/Downloads/geckodriver /usr/local/bin

Ruby で適当にスクリプトを書いてみる

公式ドキュメントにある下記を叩いてみてエラーが出ずに動けば環境構築完了です。

require 'rubygems'
require 'selenium-webdriver'

driver = Selenium::WebDriver.for :firefox
driver.get "http://google.com"

element = driver.find_element :name => "q"
element.send_keys "Cheese!"
element.submit

puts "Page title is #{driver.title}"

wait = Selenium::WebDriver::Wait.new(:timeout => 10)
wait.until { driver.title.downcase.start_with? "cheese!" }

puts "Page title is #{driver.title}"
driver.quit

Selenium WebDriver — Selenium Documentation

あとは専用のコマンドを覚えながら、スクリプトを作成して行くカタチになります。お疲れ様でした。

※ macOS High Sierra 10.13.6
※ ruby 2.5.1
※ selenium-webdriver (3.14.0)

コメントを残す

  • コメント欄には個人情報を入力しないようにしてください。

  • 入力いただいたメールアドレスは公開されませんがサーバーに保存されます。
  • 入力いただいた情報の他に、IPアドレスを取得させていただきます。取得した IPアドレス はスパム・荒らしコメント対処ために利用され、公開することはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください