Seleniumを始めてみましたので、簡単に動かすところまで書いてみます。Windowsでって書いてますが、Rubyのインストール以外は他のOSでも同様のハズです。

目次

  1. 前書き
  2. 環境
  3. Rubyのインストール
  4. Selenium WebDriverのインストール
    1. Selenium WebDriverがインストール出来なかった場合
    2. Selenium WebDriverがインストールできたことを確認する
  5. Chrome Driverをダウンロード
  6. コードを書いてみる
  7. 感想
  8. 参考

前書き


Seleniumは調べたら種類がいろいろあってややこしいのですが、現時点ではWebDriverというやつだけ使えばいいです。たぶん。
Selenium Builderという自動生成してくれるツールもありますが、javascriptやモーダルの前には無力に等しいので5分で使うのをあきらめました。

とりあえず、WebDriverを使えるようにするといいと思います。また、今回はブラウザはChromeでやります。

また、下記の記事に続きっぽいのを書いてます。

Selenium + Capybara + RSpecで自動テストしてみる : 準備編
Selenium + Capybara + Minitestで自動テストしてみる

環境


  • Ruby 2.3
  • Windows10
  • Selenium 3.0.1
  • ブラウザ Chrome

Rubyのインストール


インストーラーとDevelopmentKitをダウンロードします。
インストール時は「Rubyの実行ファイルへ環境変数PATHを設定する」にチェックを入れます。

Rubyのインストールが終わった後はDevelopmentKitを解凍してRubyのインストールディレクトリ(例えば C:/Tuby23-x64)にまるまる上書きします。

Selenium WebDriverのインストール


コマンドプロンプトで下記を入力します。

1
gem install selenium-webdriver

Selenium WebDriverがインストール出来なかった場合

この時に下記のように怒られるかもしれません。

1
2
ERROR:  Could not find a valid gem 'selenium-webdriver' (>= 0), here is why:
Unable to download data from https://rubygems.org/ - SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (https://api.rubygems.org/specs.4.8.gz)

その場合はGemの配布元を追加します。

1
2
D:\>gem source --add http://production.cf.rubygems.org
http://production.cf.rubygems.org added to sources

gem sourceを確認し、先ほど追加した配布元が追加されていることを確認します。

1
2
3
4
5
gem source list

*** CURRENT SOURCES ***
https://rubygems.org/
http://production.cf.rubygems.org

再度 Selenium WebDriverのインストールを行います。
なお、プロキシ等が絡んでインストールできない場合は知りません。

Selenium WebDriverがインストールできたことを確認する

gem listコマンドでSelenium WebDriverがインストールできたことを確認します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
gem list

*** LOCAL GEMS ***
bigdecimal (1.2.8)
childprocess (0.5.9)
did_you_mean (1.0.1, 1.0.0)
ffi (1.9.14 x64-mingw32)
io-console (0.4.5)
json (1.8.3)
minitest (5.9.0, 5.8.3)
net-telnet (0.1.1)
power_assert (0.3.0, 0.2.6)
psych (2.0.17)
rake (11.2.2, 10.4.2)
rdoc (4.2.2, 4.2.1)
rubyzip (1.2.0)
selenium-webdriver (3.0.1, 2.53.3)
test-unit (3.2.0, 3.1.5)
websocket (1.2.3)

なぜか2バージョンはいってますね…まあいいでしょう…

Chrome Driverをダウンロード


ChromeDriverをダウンロードします。
前述のRubyのインストールディレクトリのbin配下にruby.exeがあるはずなので、それと同一ディレクトリにchromedriver.exeを配置します。

コードを書いてみる


というわけで、コードを書いてみましょう。今回は私のハンドルネームをGoogle検索でエゴサーチしてみましょうか。
ざっと下記のような感じでしょうか。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
require 'selenium-webdriver'

# Chromeを呼び出す
driver = Selenium::WebDriver.for :chrome

# 全画面表示
driver.manage().window().maximize()

# Googleに移動
driver.get "https://www.google.co.jp/"

# ページロード待機
wait = Selenium::WebDriver::Wait.new(:timeout => 5)

# 検索ボックス探して入力して検索
search_box = driver.find_element(:id, 'lst-ib')
search_box.send_keys('YoshinoriN')
search_box.submit()

sleep 10
driver.close

ちなみに、エゴサーチしても私のブログ・その他アカウントは1ミリもひっかからないですね!
悲しい…(´・ω・`)

感想


「ああ~Seleniumすごいんじゃ~!」と言いたいところなのですが…
javascriptとかmodalが絡むとスッゲーめんどくさいです…

あとはRuby慣れてないし「そもそも書いたテストコードどうやって配布すんねん。」とか「テストコードの設計どうやったらええねん?」とか「各ブラウザとバージョン考慮せなあかん」とかSelenium以外のところも含めていろいろ悩みの種が多いです。

ちなみに「Seleniumしんどいしんどい」とTwitterでつぶやいたら英語圏のSelenium学習アカウントからフォローされました(笑)

参考


Selenium 入門
rubyからchrome操作してみた by selenium-webdriver