[Ruby]ハマりを最小限に抑えるseleniumの導入方法
はじめに
seleniumは、Webアプリケーションのテストを自動化するためのツールであり、プログラムからWebブラウザの自動操作を行うことが出来ます。
自分が導入した際につまづいた点を振り返りながら、初心者なりに考え、仮にエラーが出たとしても調査しやすいような手順にまとめましたので、これから導入される方のお役に立てればと思います。(フォルダ構成が変わるだけで、WinもMacも作業は同じです)
selenium導入手順 目次
0_webスクレイピングで気をつけること
1_確認作業用フォルダの作成
2_chromedriverのダウンロード
3_seleniumのインストール
4_中間動作確認
5_chromedriverの移動
6_最終動作確認
0_webスクレイピングで気をつけること
seleniumを使ってWebアプリケーションの自動テストの他に、webスクレイピングも出来ます。スクレイピングの際、やって良いこと/悪いことがありますので、これから始めるという方は下記の記事を読まれることをおすすめします。
- Webスクレイピングの注意事項一覧
- WEBスクレイピングの技術と懸念事項
1_確認作業用フォルダの作成
確認作業のためにデスクトップにフォルダを作り、中にhtmlファイルとRubyファイルを作成します。
コンソールで下記を実行
mkdir /Users/ユーザーネーム/Desktop/sele_work
cd /Users/ユーザーネーム/Desktop/sele_work
touch sample.html
touch selenium_test.rb
ファイルを編集
<!DOCTYPE html>
<html>
<head>
<title>テスト用</title>
</head>
<body>
<h1>ハンバーガーショップ</h1>
<div>
メニュー:
<select name="menu">
<option value="">メニューを選択してください</option>
<option value="normal">ハンバーガー</option>
<option value="cheese">チーズバーガー</option>
<option value="double">ダブルバーガー</option>
</select>
<br>
サブメニュー:
<input type=checkbox name="submenu" value="drink">飲み物
<input type=checkbox name="submenu" value="potato">ポテト
<input type=checkbox name="submenu" value="nugget">ナゲット
<br>
お持ち帰り:
<input type=radio name="takeout" value="yes">yes
<input type=radio name="takeout" value="no">no
<br>
メモ:
<input type=text name="memo">
</div>
<input type=submit value="OK">
<input type=reset value="キャンセル">
</body>
</html>
require "selenium-webdriver"
url = "file:///Users/ユーザーネーム/Desktop/sele_work/sample.html"
# chromeドライバは作業フォルダに仮置中なので作業フォルダを指定する
chromedriver_path = "/Users/ユーザーネーム/Desktop/sele_work/chromedriver"
Selenium::WebDriver::Chrome::Service.driver_path = chromedriver_path
driver = Selenium::WebDriver.for :chrome
# urlへアクセス
driver.get(url)
p driver.page_source
driver.quit
2_chromedriverのダウンロード
Google Chromeのバージョンを確認してから、自分のchromeのバージョンに合ったドライバをこちらからダウンロードし、解凍したchromedriver
を/Users/ユーザーネーム/Desktop/sele_work
に置きます。
3_seleniumのインストール
コンソールで下記を実行
gem install selenium-webdriver
4_中間動作確認
ここで一旦、ruby selenium_test.rb
を実行し、sample.html
のsourceが取得できていることを確認します。セキュリティーのエラーが出たら、左上のりんごマーク > システム環境設定 > セキュリティーとプライバシーに進み許可を選択します。
セキュリティーブロックを解除してもエラーが発生する場合は、以下が考えられます。
- Google Chromeとchromedriverのバージョンが合っていない
- 誤字やファイル指定のミスが有る
5_chromedriverの移動
chromedriver
の動作確認が出来たので、本来置くべき場所の/usr/local/bin
へ移動します。
コンソールで下記を実行し、ちゃんと移動できたかも確認。
sudo mv chromedriver /usr/local/bin/
which chromedriver
PATHが通ってるか確認
echo $PATH
もし通っていないならPATHを追加
export PATH=“/usr/local/bin:$PATH”
6_最終動作確認
最後に、selenium_test.rb
を修正し、再度ruby selenium_test.rb
を実行する。
中間動作確認と同じ結果が得られれば任務完了。
ここでエラーが出る場合は、PATHが通っていないことが考えられます。
require "selenium-webdriver"
url = "file:///Users/ユーザーネーム/Desktop/sele_work/sample.html"
# chromeドライバは作業フォルダに仮置中なので作業フォルダを指定する
# コメントアウト ここから
# chromedriver_path = "/Users/ユーザーネーム/Desktop/sele_work/chromedriver"
# Selenium::WebDriver::Chrome::Service.driver_path = chromedriver_path
# ここまで コメントアウト
driver = Selenium::WebDriver.for :chrome
# urlへアクセス
driver.get(url)
p driver.page_source
driver.quit
Author And Source
この問題について([Ruby]ハマりを最小限に抑えるseleniumの導入方法), 我々は、より多くの情報をここで見つけました https://qiita.com/atsushi0919/items/5502e7cdbdb878947cc9著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .