テストやテストの自動化とは何かを話すべきではないと思います。 また、最初のコースでは、Cucumber、Capybara、またはSelenium-Webdriverを紹介しません。これは、インターネットで情報を見つけることができるためです。
すべての「作業」は、Webブラウザーとのリアルタイムの対話で行われます。 つまり Webブラウザが起動し、実際のユーザーのアクションをエミュレートし、テストが完了すると閉じます。 実際のブラウザを起動すると、ajaxリクエストとさまざまなJS「チップ」を自動化できます。 ただし、JSを使用する必要がない場合は、Webブラウザーを起動することはできませんが、コンソールから作業することにより、時間を節約し、テストを高速化できます。 これらの目的のために、Selenium-Webdriverの代わりにCapybara-mechanizeドライバーを使用できます。
まだキュウリとカピバラを知ることができなかった人の
関連するすべての設定で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
セレン