20

Cucumber で Web アプリケーションの動作をテストしています (ボンネットの下で Selenium と Watir を使用しています)。私の Web アプリには HTML5 ページがあり、新しい "required" 属性を利用しています。必須フィールドを含むデータ入力フォームがあり、フィールドを空白にしてそのフォームを送信した場合、Web アプリがエラー状態で正しく応答することを確認したいと思います。

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

一方、ヘッドレスまたは HTML5 に準拠していないブラウザーでテストすると、フォームが送信され、Web アプリがエラーをトラップし、ユーザーをフォーム ページに戻してエラー メッセージを表示することができます。

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

Selenium および Watir Web ドライバーの現在の状態では、これは不可能である可能性があります。しかし、HTML5 の "required" エラー ポップアップ メッセージを確認する方法を知っている人がいれば、それは大きな助けになるでしょう。

編集 2012-06-02:

HTML5 ブラウザーの警告のサンプルを含むサンプル ページを次に示します。

必須のテキストと選択、内部ヒント テキストを表示するテキスト ボックス、および正規表現入力検証を含むテキスト ボックスがあります。このページには、問題を混乱させる CSS や JavaScript が含まれていません。これは単なる標準の HTML5 です。完全な内訳については、HTML5 フィールド属性に関する w3schools ページを参照してください。フォームは、フォーム入力をエコーする単純な CGI スクリプトに送信されます (フォームが成功した場合)。サンプルフォームページに送信失敗が残ります。

4

4 に答える 4

1

required私はこれまで HTML5 属性を扱ったことがありません。しかし、見た目からすると、そのrequired属性はフォーム フィールドに入力する必要があることをブラウザーに警告するだけです (つまり、DOM は変更されません)。

requiredその属性が適切なフォーム フィールドの HTML に存在すると断言するのが合理的であるように思えます。このテストは、HTML5 ブラウザーと非 HTML5 ブラウザーの両方で合格するはずです。

それ以上のことを主張しようとすると、ブラウザの機能をテストしているように思えます。

于 2013-02-27T01:50:34.830 に答える
1

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

watir または watir-webdriver を使用すると、.type を使用して、入力に適切なタイプ (email など) が設定されていることを検証できます。これは、ブラウザーの検証を制御するものです。.attribute_value("required") は機能する可能性がありますが、通常は属性の値を返すため、そのメソッドがブール属性にどのように応答するかはわかりません。他の代替手段は、.attribute_list と

ここでも、Watir が .required? を追加する正当な理由のように思えます。その属性が設定されているかどうかを簡単に確認できる要素を入力するメソッド。だから私はその機能を求めましたhttps://github.com/watir/watir-webdriver/issues/189

于 2013-03-27T16:23:04.647 に答える
1

解決策の 1 つは、Cucumber を使用してエラーの動作をテストするのではなく、フィールドが構成されていることをテストすることです。

したがって、Cukeの用語では、次のようなものがあるかもしれません

Given I am filling in my form
Then I should see that my name is required

次に、名前フィールドの html タグで必要なオプションを探す何かを記述します。

それ以上は、アプリケーションではなくブラウザをテストしています。

于 2019-09-30T13:18:30.137 に答える