これが「ブラウザのテスト」に近づき始めていることに同意します。コードがそのブラウザ機能に依存している場合は、サイトが適切なhtml(5)コードを生成して、ブラウザがそのレベルを希望していることを認識できるようにする必要があります。検証の、そしてそれはあなたが検証できるものです。
ウェブの芸術でこれに関するいくつかの良い背景
ブラウザ側の検証は、特定の入力タイプ(watirの.type
方法で確認できます)と新しいrequired
属性(確認が難しい場合があります)の組み合わせによってトリガーされます。これを考えると、実際には、新しい属性のかなり良い原因がここにあると思います。 Watirの機能。.required?
新しい「required」属性をサポートするすべての入力要素でサポートされるべきメソッドを使用でき、その「required」属性が存在する場合はtrueを返すと思います。
したがって、現時点でできることは、この機能をサポートするHTML5ブラウザーで実行していることがわかっている場合、入力タイプが「email」であり、「required」属性が存在することを確認することです。(私はそれを行う方法についての考えを持っていませんが、おそらく他の誰かが方法を提案することができます)。
もう1つ確認する必要があるのは、無効な値を指定し、フォームがそれ自体を送信できないようにすることです。たとえば、検証が実施されているか、単なる助言です。(そして、curlやhttpartyなどを使用して無効なデータを送信することでサーバー側を確認することを忘れないでください。敵対的なユーザーは、ブラウザの検証を簡単にバイパスして、バッファを引き起こすように設計された偽の値または「敵対的な」値でそのフォームを送信する可能性があります。オーバーフローまたはインジェクション攻撃。クライアント側の検証のみに依存するサイトはありません。)
もちろん、考慮すべきもう1つのことは、ユーザーがその特定の検証機能をサポートしていないブラウザーを使用している場合、ページは何をするのかということです。ある種のクライアント側のJavaScriptと表示されるメッセージを想定しています。
その場合、それは実際にメッセージが「表示される」ようにされる方法に依存します。私がテストしているアプリでは、この種のメッセージは、cssによって制御される一意のクラスを持つ便利なdivにあり、通常は非表示になり、クライアント側のJSがメッセージを表示する必要があることを検出すると表示されるように設定されます。ユーザー。もちろん、私はそのようなもののテストを行っています。これは、私たちの利用規約に同意する人のための例です。(注:ページオブジェクトとデータオブジェクトを実行するために、CucumberとTest-Factory gemを使用します)
メッセージから始めましょう、そしてright-click.examine-elementが明らかにするもの
ファイルのシナリオはgrower_selfregister.feature
次のようになります
Scenario: self registering grower is required to agree to terms and conditions
Given I am a unregistered grower visiting www.climate.com
When I try to self-register without agreeing to the terms and conditions
Then I am informed that Acceptance of the terms and conditions is required
And I remain on the register page
重要なキュウリの手順は次のとおりです。
When /^I try to self-register without agreeing to the terms and conditions$/ do
@my_user.self_register(:agree_to_terms => FALSE)
end
Then /^I am informed that Acceptance of the terms and conditions is required$/ do
on Register do |page|
page.agree_to_terms_required_message.should be_visible
end
end
Then /^I remain on the register page$/ do
on Register do |page|
#ToDo change this to checking the page title (or have the page object do it) once we get titles
page.url.should == "#{$test_site}/preso/register.html"
end
end
register.rb
ページオブジェクトの関連部分は次のとおりです。
class Register < BasePage
#bunch of other element definitions removed for brevity
element(:agree_to_terms_required_message) {|b|b.div(:class => "terms-error")}
end
それは例を提供するのに役立ちますか?
注:まだページにいない場合はメッセージが表示されない可能性があるため、2番目の検証(ページにとどまる)は冗長であると簡単に主張できます。ただし、シナリオで説明されている期待されるユーザーエクスペリエンスが明確になります。また、JavaScriptアラートなどを使用することが決定された場合など、実装を変更する場合は非常に重要になる可能性があります。一度却下されると(「メッセージが表示されます」という手順で実行される可能性があります)、ユーザーはとにかくサイトに移動しませんでした。