RubyでのSelenium自動テストの記述を高速化する

ブラウザとの対話を自動化するツールの1つにSelenium Webdriverがあります。 実際、Selenium Webdriverを使用した自動Webページテストはやや面倒に見えます。 次に、2つのブラウザでGoogle検索ページを開き、検索行に入力してフォームを送信する「小さな」例を示します。







実践が示しているように、ページ構造の小さな変更では、かなり大量のコードを処理する必要があることが多く、これもまた多大な時間の投資を伴います。 テストの量を減らして読みやすくするツールを見つける試みが行われましたが、それらは単に現れませんでした。 DSL(ドメイン固有言語、DSL-「サブジェクト固有言語」)を使用してgemを開発することが決定されました。これにより、余分なものを含まず、簡単かつ迅速に編集できる直感的なテストを作成できます。 宝石はSelWeT(Selenium Web Test)と呼ばれていました。



開発時には、Ruby 2.1.3言語と、selenium-webdriver、test-unit、shoulda-context gemを使用しました。 ページ上の要素を選択するために、CSSセレクターのみを使用することが決定されました。 それらはすべての必要なニーズをカバーします(ページ上のグループまたは特定の要素を選択します)。 これにより、タスクが多少簡素化されました。



SelWeT gemを使用すると、次のことができます。



テストを実行するには、必要なドライバー(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



All Articles