はじめに
この記事は導入時の簡単なトラブルシュートのメモになります。
つい先日、社会人デビューし配属が決まりました。
そこでselenium
を使いそうだなぁという勝手なイメージと、
そう言えば名前は知ってるけど使ったことないなぁということで触ってみようと思ったのが発端です。
そこで、
このあたりの記事を参考に動かしてみるぞ〜!!と意気込んでいたところ、
requireの時点でエラーが出てしまったため今後の自分のためにメモを残すことにしました。
何が起きたん?
selenium-webdriver
まずselenium-webdriver
のインストール時に、
gem install selenium-webdriver
ではパーミッションエラーが出てしまいました。
こちらは単純に、
sudo gem install selenium-webdriver
で解決できました。
chromedriver
次に、chromeで動かそうと考えていたのでchromedriverのインストールを試みました。
とりあえず、ここからダウンロードしたchromedriverを実行しながらプログラムを動かしてみたところ...
Unable to find chromedriver. Please download the server from http://chromedriver.storage.googleapis.com/index.html and place it somewhere on your PATH. More info at https://github.com/SeleniumHQ/selenium/wiki/ChromeDriver. (Selenium::WebDriver::Error::WebDriverError)
ダメでした。
(最終的にここからダウンロードする必要はありませんでした。)
そこでよくよく調べてみると、/usr/sbin/
にファイルを入れろ、といった記事をちらほら見つけました。
なるほどガッテンショウチ!と意気揚々と手を動かしたのですが、
このページ曰く、
保護対象となるのは/usrおよび/bin、/sbin、/System、/Applications/Utilities以下のディレクトリ
これらのディレクトリにはAppleのコード署名がされたシステムプロセスからしか書き込みが行えない
らしく、cp
やmv
ではファイルを移せないわけです(GUIでの移動ももちろん不可)。
リカバリーモードでOSを起動してcsrutilコマンドで設定することで、このrootlessという保護機能を無効化することもできるらしいのですが、そこまで手間を掛けたくない上に、なんか気持ち悪いのでさらに調べました。
すると、
brew install chromedriver
あ、Homebrew
にあるのね。
おわりに
はい、Homebrewからインストールすることで一瞬で解決してしまいました。
自分は体験したので次回以降はしばらく印象に残っているので大丈夫だと思いますが、
調べていても情報が少なく案外すぐには解決せず、この段階で初心者は折れかねないと感じたのでこのようにメモにしました。
動作確認は、
require 'selenium-webdriver'
driver = Selenium::WebDriver.for :chrome #使用するブラウザを選択
driver.navigate.to "http://www.google.com" #URL指定
puts driver.title #ページタイトルを出力
element = driver.find_element(:name, 'description') #セレクタ指定
puts element.attribute('content') #コンソールに出力
driver.quit #ブラウザを閉じて終了
こんな感じのものを動かして問題なく終了すれば大丈夫です。