Ruby Seleniumを使ってchromeで任意のワードで検索をする

Rubyでseleniumを使用して、プログラムからchromeを立ち上げて、指定したワードで検索するための簡単なサンプルコードです。ここではselenium-webdriverを利用しています。
環境
- OS windows10 pro
- Ruby 2.7
chromedriverダウンロード
まずは、chromeを利用するのに必要なドライバー「 chromedriver 」を、こちらよりダウンロードします。
※自分の場合はchromeのバージョンが79だったので79をダウンロードしてます。

chromedriver_win32.zipをクリックしてダウンロードします。

ダウンロードが終わったら、解凍してPATHを通すためのファルダを用意します。
※今回はC:\chromedriverにchromedriver.exeを移動させてPATHを通します

PATHも通しておきます。画像

selenium-webdriverインストール
Start Command Prompt with Rubyを起動します

下記のコマンドを実行してインスールします。
gem install selenium-webdriver
※後述しますがffiがないとエラーとなります。
gem install ffi
Selenium使い方
下記のコードはchrome上で「mebee」というワードを検索するだけのプログラムとなります。
test.rbという名前で下記のコードを編集します。
require "selenium-webdriver"
#chrome起動
driver = Selenium::WebDriver.for :chrome
# googleにアクセス
driver.navigate.to "http://google.com"
#qというnameを持つ要素を取得する
element = driver.find_element(name: 'q')
#検索文字列を入力
element.send_keys "mebee"
#検索を実行
element.submit
#5秒待機
sleep 5
#終了
driver.quit
実行します。
ruby test.rb
下記のエラーが発生
Traceback (most recent call last):
2: from sel.rb:2:in `<main>'
1: from C:/Ruby27-x64/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:92:in `require'
C:/Ruby27-x64/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:92:in `require': cannot load such file -- selenium-webdriver (LoadError)
15: from sel.rb:2:in `<main>'
14: from C:/Ruby27-x64/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:156:in `require'
13: from C:/Ruby27-x64/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:168:in `rescue in require'
12: from C:/Ruby27-x64/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:168:in `require'
11: from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/selenium-webdriver-3.142.7/lib/selenium-webdriver.rb:20:in `<top (required)>'
10: from C:/Ruby27-x64/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:72:in `require'
9: from C:/Ruby27-x64/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:72:in `require'
8: from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/selenium-webdriver-3.142.7/lib/selenium/webdriver.rb:20:in `<top (required)>'
7: from C:/Ruby27-x64/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:72:in `require'
6: from C:/Ruby27-x64/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:72:in `require'
5: from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/childprocess-3.0.0/lib/childprocess.rb:209:in `<top (required)>'
4: from C:/Ruby27-x64/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:72:in `require'
3: from C:/Ruby27-x64/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:72:in `require'
2: from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/childprocess-3.0.0/lib/childprocess/windows.rb:4:in `<top (required)>'
1: from C:/Ruby27-x64/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:92:in `require'
C:/Ruby27-x64/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:92:in `require': cannot load such file -- ffi (LoadError)
14: from sel.rb:2:in `<main>'
13: from C:/Ruby27-x64/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:156:in `require'
12: from C:/Ruby27-x64/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:168:in `rescue in require'
11: from C:/Ruby27-x64/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:168:in `require'
10: from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/selenium-webdriver-3.142.7/lib/selenium-webdriver.rb:20:in `<top (required)>'
9: from C:/Ruby27-x64/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:72:in `require'
8: from C:/Ruby27-x64/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:72:in `require'
7: from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/selenium-webdriver-3.142.7/lib/selenium/webdriver.rb:20:in `<top (required)>'
6: from C:/Ruby27-x64/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:72:in `require'
5: from C:/Ruby27-x64/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:72:in `require'
4: from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/childprocess-3.0.0/lib/childprocess.rb:209:in `<top (required)>'
3: from C:/Ruby27-x64/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:72:in `require'
2: from C:/Ruby27-x64/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:72:in `require'
1: from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/childprocess-3.0.0/lib/childprocess/windows.rb:3:in `<top (required)>'
C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/childprocess-3.0.0/lib/childprocess/windows.rb:6:in `rescue in <top (required)>': FFI is a required pre-requisite for Windows or posix_spawn support in the ChildProcess gem. Ensure the `ffi` gem is installed. If you believe this is an error, please file a bug at http://github.com/enkessler/childprocess/issues (ChildProcess::MissingFFIError)
エラーメッセージ通りにffiをインスールします。
gem install ffi
再度、実行するとchromeが起動して、mebeeというワードの検索結果が表示されます。
ruby test.rb
-
前の記事
Vue.js Error: Cannot find module ‘less’が発生した際の対処法 2020.03.23
-
次の記事
IPアドレス 管理ツール(IPAM)「phpIPAM」をdockerを使用して構築する手順 2020.03.23
コメントを書く