テスト自動化/ Cucumber、CapybaraおよびSelenium-WebDriverの構成

すべてが完了したので、テストの自動化に関するいくつかの行を走り書きする時間があります...



テストやテストの自動化とは何かを話すべきではないと思います。 また、最初のコースでは、Cucumber、Capybara、またはSelenium-Webdriverを紹介しません。これは、インターネットで情報を見つけることができるためです。



すべての「作業」は、Webブラウザーとのリアルタイムの対話で行われます。 つまり Webブラウザが起動し、実際のユーザーのアクションをエミュレートし、テストが完了すると閉じます。 実際のブラウザを起動すると、ajaxリクエストとさまざまなJS「チップ」を自動化できます。 ただし、JSを使用する必要がない場合は、Webブラウザーを起動することはできませんが、コンソールから作業することにより、時間を節約し、テストを高速化できます。 これらの目的のために、Selenium-Webdriverの代わりにCapybara-mechanizeドライバーを使用できます。



まだキュウリとカピバラを知ることができなかった人のために、私はこれを言います。「キュウリ」をテキストの「パーサー」として、カピバラをキュウリとドライバーの間のレイヤーとして、また自動化ステップを書くために使用します。 つまり、キュウリでは、テストを単純な言語で記述し、Capybaraを使用して手順を実装します。 そして、カピバラはすでにウェブドライバーと対話していますが、これはまったく異なる話です;)



関連するすべての設定でrubyがインストールされていることが前提です。 FFブラウザーを使用した例を見てみましょう。 それで...行こう!

gemのインストール:

(ubuntu) # sudo gem install cucumber capybara selenium-webdriver capybara-mechanize --pre
      
      







私のマシンにインストールされている宝石ファイル:

キュウリ-1.1.4

カピバラ-1.1.2

capybara-mechanize-0.3.0.rc3

selenium-webdriver-2.17.0



すでにCucumberで記述された機能があるとします。 正しい操作に必要なフォルダー構造を考慮してください。



マイプロジェクト\
    機能\
     step_definitions /
         user_steps.rb
    サポート\
         env.rb




構造自体に関するいくつかの言葉:

「features」フォルダーには、Cucumberのルールに従って作成された「features」があります。

フォルダー「step_definitions」で、目的の機能を実装します。

サポートフォルダーにいくつかの構成ファイル、ライブラリー。 また、env.rbファイル-起動直後にCucmberによってアクセスされます。 ドライバーはどこで初期化されますか? 初期セットアップ。



すべてが非常に単純なようです。 env.rbファイルの構成に直接進みます。

env.rbを開きます。 そして、必要なファイルを接続します。

 require 'cucumber/formatter/unicode' require 'capybara' require 'capybara/dsl' require 'capybara/session' require 'selenium-webdriver' require 'capybara/cucumber' require 'capybara/mechanize/cucumber'
      
      







Capybaraは隠された要素を無視し、タイムアウトとデフォルトのホストを設定します:

 Capybara.ignore_hidden_elements = true Capybara.default_wait_time = 15 Capybara.app_host = «http://my_site.com»
      
      







ドライバー自体を登録します。

 Capybara.register_driver :selenium do |app| profile = Selenium::WebDriver::Firefox::Profile.new #         FF. Selenium::WebDriver::Firefox.path = File.expand_path('~/path/to/firefox') #   ,    FF  . Capybara::Selenium::Driver.new(app, :browser => :firefox, :profile => profile) end #       web- Capybara.register_driver :mechanize do |app| Capybara::Mechanize::Driver.new(app) end
      
      







Cucumberは、スクリプトを実行する前に、Before do ... endセクションを呼び出します。 そして、スクリプトが完了した後-do ...終了後。 覚えている場合、Cucumberはタグの操作をサポートします。つまり、スクリプトの前にタグ名を指定し、「前」セクションでCapybaraのドライバーをインストールできます。 また、「After」セクションから失敗したテストの名前を表示したり、レターやレポートなどを送信したりできます。 正義のために、Capybaraはデフォルトでいくつかのドライバーをサポートしていることに注意したいのですが、自分でドライバーを再定義することをお勧めします。 :)



 Before do |scenario| if scenario.source_tag_names.include?('@no_browser') and Capybara.default_driver != :mechanize Capybara.default_driver = :mechanize elsif !scenario.source_tag_names.include?('@no_browser') and Capybara.default_driver != :selenium Capybara.default_driver = :selenium end end After do |scenario| if scenario.failed? puts scenario.name puts scenario.exception.message end end
      
      







Capybaraの新しいバージョンでは、各スクリプトの後に、gemはセッションをリセットします。 これにより、承認システムがある場合は、新しいシナリオごとに再度検証する必要があると脅かされます。 これは、このアクションをブロックすることで回避できます。 gemファイル(ubuntu:... / gems / capybara-VERSION / lib / capybara / cucumber.rb)に移動して、最初のセクション(「do ... endセクション」)で「Capybara.reset_sessions!」の前にコメントを追加する必要があります。 これらはすべてアップデートの「革新」ではありません。各シナリオの直後に、「カピバラ」はブラウザを空白のページに移動します。 また、「... / gems / capybara-VERSION / lib / capybara / selenium / driver.rb」ファイルの「@ browser.navigate.to( 'about:blank')」の前にコメントを入れれば、これを「取り除く」ことは難しくありません。 。



また、一部のテスト環境では、いわゆる基本認証機関があるため、URLでユーザー名とパスワードを直接渡すことでこれを回避できることにも注意してください。



 Capybara.visit("http://#{$name}:#{$pass}@#{url}")
      
      







このアクションの後、FF 洗練された別のウィンドウを発行する場合があります(ああ、このFF ...)。





この「ウィンドウ」は、ブラウザー自体に1つのパラメーターを追加することで削除されます。 方法は次のとおりです。

 
	 FFのabout:構成ページを開きます。
	新しい整数キーを作成します(右クリック→新規→整数):
	値が255のnetwork.http.phishy-userpass-length




オリジナルはこちらです。

以上です。 気分は終わりました...これで手順を記述し、テスト対象のアプリケーションを改善するのに十分です:)



ステップの作成方法、シナリオの作成方法を検討したり、Cucumber / Capybara / WebDriverの他の「領域」をヒットしたりできます。 興味深い場合-書いてください!



皆さんに感謝と幸運を!



PSいくつかのリンク:

きゅうりgithub

カピバラgithub

セレン



All Articles