実践が示しているように、ページ構造の小さな変更では、かなり大量のコードを処理する必要があることが多く、これもまた多大な時間の投資を伴います。 テストの量を減らして読みやすくするツールを見つける試みが行われましたが、それらは単に現れませんでした。 DSL(ドメイン固有言語、DSL-「サブジェクト固有言語」)を使用してgemを開発することが決定されました。これにより、余分なものを含まず、簡単かつ迅速に編集できる直感的なテストを作成できます。 宝石はSelWeT(Selenium Web Test)と呼ばれていました。
開発時には、Ruby 2.1.3言語と、selenium-webdriver、test-unit、shoulda-context gemを使用しました。 ページ上の要素を選択するために、CSSセレクターのみを使用することが決定されました。 それらはすべての必要なニーズをカバーします(ページ上のグループまたは特定の要素を選択します)。 これにより、タスクが多少簡素化されました。
SelWeT gemを使用すると、次のことができます。
- 1つおよび複数のブラウザーでテストを実行します(並行して実行されます)。
- ページ上の要素の1つまたはグループの存在を確認します。
- ページ要素の操作(要素をクリック、要素の上にカーソルを移動、テキストフィールドに入力、フォームに入力して送信、選択で値を選択、チェックボックスとラジオのステータスを確認、iframeに切り替えるなど);
- ブラウザと対話します(リンクをたどる、キャッシュをクリアする、開いているページのスクリーンショットを撮る、新しいウィンドウでリンクを開くなど)。
テストを実行するには、必要なドライバー(IE、Chromeにはドライバーが必要)がインストールされたローカルまたはリモートマシンで、少なくとも2.44を実行するSelenium Serverバージョンが必要です。
Windows 7マシンでChromeのドライバーを使用してSelenium Serverを起動する例:
java -jar selenium-server-standalone-2.44.0.jar -Dwebdriver.chrome.driver = /path/to/chromedriver.exe
もちろん、最初に必要なブラウザをこのマシンにインストールする必要があります。
テストを実行するマシンのGemfile:
gem 'selenium-webdriver', '~> 2.44.0' gem 'test-unit', '~> 3.0.8' gem 'shoulda-context', '~> 1.2.1' gem 'selwet', '~> 0.0.2'
gemの機能を示す例:
require 'selwet' # class SelWeT::Unit # Unit setBrowsers [:firefox, :chrome] # , setSeleniumServerUrl 'http://127.0.0.1:4444/wd/hub' # selenium server context "Habr" do should "1. Find habrahabr" do # 'https://www.google.ru/' Unit.followTheLink 'https://www.google.ru/' # status, error = Unit.postForm 'form', {'[type="text"]'=>"habrahabr", 'button[name="btnG"]'=>:submit} # , assert_equal true, status, error end should "2. Open harbahabr" do # status, error = Unit.openInNewWindow '[href = "http://habrahabr.ru/"]' # Unit.closeWindow 0 # , assert_equal true, status, error status, error = Unit.checkLocation 'http://habrahabr.ru/' # , assert_equal true, status, error # http://habrahabr.ru/ end should "3. Click on first article" do # status, error = Unit.click "div.post:first-child a.post_title" # , assert_equal true, status, error end end end
例からわかるように、SelWeTを使用すると、明確な機能テストをすばやく概説できます。
gemをインストールするには、実行する必要があります
gem install selwet
ドキュメントはGitHubのリポジトリにあります。
SelWeT: https : //github.com/inventos/selwet.git
Selenium wiki: https : //code.google.com/p/selenium/wiki/Grid2
Shoulda-context: https : //github.com/thoughtbot/shoulda-context
テストユニット: https : //github.com/test-unit/test-unit