2012-06-01 8 views
12

私はCucumberでWebアプリケーションの動作をテストしています(SeleniumとWatirを使用しています)。私のWebアプリケーションにはHTML5ページがあり、新しい「必須」属性を使用します。必要なフィールドを持つデータ入力フォームがあり、フィールドを空白にしてフォームを送信すると、Webアプリケーションがエラー状態で正しく応答することを確認したいと思います。キュウリのHTML5ページのエラー状態をテストするにはどうすればよいですか?

残念ながら、HTML5 Webブラウザを使用してテストする場合、失敗したフィールド検証でポップアップするエラーメッセージは、Webドライバを通じてCucumberにアクセスできないように見えます。いずれの場合も、フォームは提出されず、ページはデータ入力フォームに残ります。

一方、ヘッドレスまたは非HTML5準拠のブラウザでテストする場合、フォームが送信され、Webアプリケーションでエラーがトラップされ、ユーザーがエラーメッセージとともにフォームページに戻ります。

2番目のケースでは、エラーメッセージがページに配信されるHTMLの一部であるため、エラーメッセージの存在を簡単にテストできます。私の問題は、ヘッドレスブラウザとHTML5ブラウザの両方のエラー状況を検証する単一のテストシナリオを作成する方法がわかりません。

これは、SeleniumとWatir Webドライバの現在の状態では不可能なことがあります。しかし、HTML5の「必須」エラーポップアップメッセージをどのように確認できるか分かっている人は、大きな助けとなります。

EDIT 2012-06-02:ここではHTML5ブラウザーの警告のサンプリングと、このようなとサンプルのページです: http://railsdotnext.com/stackoverflow/required.html

内部ヒントテキストを示すテキストボックスは、そこに必要なテキストであると選択し、正規表現の入力検証を行うテキストボックス。このページには、問題を混乱させるようなCSSやJavaScriptはありません。バニラのHTML5です。完全な内訳については、w3schools page about HTML5 field attributesを参照してください。フォームはフォームが成功したと仮定してフォーム入力をエコーする単純なcgiスクリプトに送信されます。提出の失敗はサンプルフォームページに残ります。

+0

私たちが見ることができる '必須'属性を使用するオンラインの例はありますか? – Cheezy

+0

私は小さなものを作りました。それは網羅的ではありませんが、周りを遊ぶのに十分なものでなければなりません。上記の元の投稿への編集を参照してください。 –

+0

HTML5エラーをテストすることは問題ではありません。これは、ブラウザが設計どおりに動作するかどうかをテストすることです。問題は、HTMLがHTML5フォームで記述されている場合にサーバーの検証をテストすることです。私はテスト環境で異なるHTMLコードを望んでいません。 SeleniumやWatir:Webdriverがjavascriptと同じようにHTML5レスポンスを有効/無効にできるのがベストです。 –

答えて

0

以前はHTML5 required属性で作業していませんでした。しかし、その外観からは、required属性はフォームフィールドを記入する必要がある(つまり、DOMは変更されない)ことをブラウザに警告するだけです。

適切なフォームフィールドのHTMLにrequired属性が存在すると主張するのは合理的です。このテストは、HTML5ブラウザとHTML5以外のブラウザの両方に適用されます。

それ以上のことをアサーションしようとすると、ブラウザの機能をテストするように思えるようです。

+0

私が私のような要素を検証する必要があるときに行うことができる唯一のことを信じていないでしょう: p $ browser.element(:css => "入力:無効 ")。存在? p $ browser.element(:css => "input:required")。存在しますか? 誰かが何か良い点やポップアップのテキストを得る方法html5 – macwadu

0

ブラウザの検証を有効にするために作成されたHTMLが正しいことを検証する以外に、ブラウザのテストではなくコードをテストすることにどのくらいのことができるかはわかりません。

watirまたはwatir-webdriverを使用すると、.typeを使用して入力に適切なタイプ(メールなど)が設定されていることを検証できます。これはブラウザの検証を制御するものです。もう一つは、少しトリッキーな必須属性の存在です。.attribute_value( "required")が機能するかもしれませんが、通常は属性の値を返します。したがって、そのメソッドがブール値属性にどのように応答するかは不明です。その他の選択肢は、.attribute_listと

もここにWatirが必要とするのが好きなようです。メソッドを使用して、その属性が設定されているかどうかを簡単に確認できる要素を入力します。だから私はその機能を尋ねたhttps://github.com/watir/watir-webdriver/issues/189

+0

[Webdriver spec](http://www.w3.org/TR/webdriver/#reading-attributes-and-properties)によるとboolean属性は、値がtrueの場合は 'true'を返し、値がfalseの場合は' nil'を返します –

関連する問題