2016-05-27 22 views
4

私は現在、UIテスト自動化の要素にいくつかのIDを配置しています。これらのIDはテストのためだけに使用されています。データ属性を追加して将来の開発者(data-testHandle = "mybutton")に見やすくするか、IDに固執する必要があります。テスト自動化html要素セレクタ。要素IDまたはDataAttribute

w3.orgは言う:

カスタムデータ属性を にこれ以上 属性や要素の適切な存在であるためにページまたはアプリケーションを、民間のカスタムデータを格納することを意図しています。

私はIDを保持することに傾いていますが、将来の開発者はIDが使用されていないと思って削除すると思います。

ここでのベストプラクティスありがとう。

+2

私はこれを閉じるべきではないと思います。多分それは言葉を変えることができるかもしれません。しかし、これらの質問は、自動化されたテストで作業するときに発生します。 – Winnemucca

+0

将来の開発者は、変数やメソッドを削除しても駄目にならないように、まったく無意味なIDを削除するべきではありません。誰かが変数やメソッドを使用している可能性があるからです。そしてもしそうであれば、自動回帰テストではそのブレークを表示します。あなたは自動テストをしていますか? –

答えて

8

これは意見に基づいていることに近いです。ここでは選択肢を作るのに役立つ要約があります。

  • が、これはテストの自動化に要素
  • これは、一般的に最速の方法ですを見つけるため方法をやって共通、みんなによく知られている:

    は、なぜあなたはID属性を使用しますセレンがそれを現代のブラウザによって最適化されたdocument.getElementById()を実行するように取得するので、ページ上の要素を見つけることができます(ただし、通常はend-to末端UIテスト、それはビルトインロケータ

  • を結合すべてのセレン言語で使用すると、FirebugのやChromeデベロッパーツールを使用する場合はある
  • )重要ではない - CSSのセレクタとXPath生成ツールは、一般的に、より堅牢な提供することになります可能な限りいつでも要素のidを使用するロケータ
  • より短いCSSセレクタとXPath式を作成します。例えば。 [automation-id=myid] .someclassとは対照的に#myid .someclassである。

なぜあなたはカスタム属性を使用します。

  • 必要なすべての要素に、たとえば、automation-id属性を追加した場合、あなたは多少の名前空間/範囲だろう、それはテストの自動化に - 誰も属性名からだけで何がわかるでしょうか。意味、あなたは劇的に

thisthis答えへの参照を)id属性とは反対に、意図的に属性を変更し、開発者の可能性を減少させていることができ、通常は、同様のアプリケーションのクライアント・サイドのロジックのために使用されます

また、ここではいくつかの関連スレッドは以下のとおりです。

+1

+1、私はまた、IDの方が短いと書くと付け加えます:Cssセレクタの '#myid'とXPathの' id( 'myid') 'です。 –

+0

ありがとう!素晴らしいリンク。私はこのポストが他人を助けると思う。 – RayLoveless

+0

あなたの3番目のリンクは、投票することができないブログ(http://techblog.constantcontact.com/software-development/a-better-way-to-id-elements-in-selenium-tests/)です。だからIMHO ** ID **を放棄するのに良い議論ではありません。大部分の意見は、他の属性よりもIDを好むようです。コンセンサス意見を反駁する助言は、より強い証拠を必要とする。 –

4

あなたは(または他の誰かが)後でJSのために要素を対象とするためにIDを使用する必要があるので、代わりにデータ属性を使用します。テスト以外の目的でカスタムデータ属性をターゲットにする必要はありません。

+2

一方、 'id'で要素を見つけることが最も速いです。 – alecxe

+0

辛いことに、テストでは、少なくとも問題になるでしょう。後でオプションを用意するほうがよいでしょう。 –

関連する問題