はじめに
Seleniumの一部の知識まとめからjenkinsで実行させるところまで記載します。
rubyを使用したいと思います。
Seleniumとは
Webブラウザを使いWebアプリケーションをテストするツール。
人の手を使ってテストしていた部分をSeleniumがブラウザ操作してくれる。
Selenium WebDriverとは
Selenium RCとWebDriverを統合したもの。
Selenium RCとは
HTML形式で記述されていたスクリプト1にJava,Rubyなどプログラミング言語を追加し高度なスクリプト生成を可能にした。
Selenium RCでは、ローカルPC上で中継サーバー(Selenium Server)を起動し、この中継サーバ上でrubyなどのスクリプトが動作しJavaScriptのコードをWebページに埋め込んでいた。
これによりWebサーバー上にスクリプトを置かなくても済むようになった。1
だがJavaScriptで操作する際に、ブラウザのセキュリティ制限によって多くの動作に制約を受けていた。
WebDriverとは
WebDriverでは、テスト実行時にブラウザ操作をブラウザ拡張機能や、OSのネイティブ機能を使って行うようにした。そのため中継サーバが不要になりセキュリティの制約を受ける問題も解決した。
この2つを統合したものが、Selenium WebDriverです。
Selenium2とも呼ばれているようです。
実践
Selenium WebDriverには、各ブラウザ毎にドライバが用意されているようです。
ドライバの準備
今回はChromeを使用します。
Chromeの場合は、Chrome Driverをインストールする必要があるので、こちらからダウンロードします。
※自分はhomebrewを使っているのでbrew install chromedriver
でインストールしました。
これだけだとSeleniumが定義しているRESTful API(JSON Wire Protocol)に従いHTTPリクエストを発行し、返って来たレスポンスを解釈して用途に合わせてまたHTTPリクエストを発行...と結構大変そうです。
公式からクライアントのライブラリ2が出ているらしく、それを使うと良いようです。下記が提供されている言語らしいです。
- Java
- Ruby
- Python
- C#
- JavaScript(Node.js)
クライアントライブラリの準備
rubyでやるのでその環境を用意します。(Node.jsにしようかな...
gem install selenium-webdriver
コードを書いてみる
手順
-
vi test.rb
打つ - 下記を書く
require "selenium-webdriver"
# Chrome用のドライバを指定
driver = Selenium::WebDriver.for :chrome
# Googleの画像検索にアクセス
driver.navigate.to "https://www.google.co.jp/imghp"
# name属性にqが設定されている要素を取得
inputElement = driver.find_element(:name, 'q')
# 取得した要素にパンケーキを設定
inputElement.send_keys "パンケーキ"
# name属性にbtnGが設定されている要素を取得
submitElement = driver.find_element(:name, 'btnG')
# 取得した要素をクリック
submitElement.click
# スクリーンショットを撮る
driver.save_screenshot('tabetai.png')
# テストを終了
driver.quit
3.ruby test.rb
打つ
と以下画像が実行プログラムのカレントディレクトリに出来ていると思います。
環境の作成、実行が複雑じゃないので良いですね、、
jenkinsで実行させるところまで書きたかったんですが、次の更新で書きますm(_ _)m