1

Knockout の例を見ると、HTML 要素に ID を追加する必要はありません。ID なしで大きなフォームを作成すると、保守が容易になるようです。

ただし、これにより Selenium HQ で問題が発生します。フォーム上の要素を一意に識別する方法はありません。

選択肢は何ですか?Selenium が Knockout によって作成された要素を選択する別の方法はありますか? または、要素に ID を割り当てる必要がありますか?

他のノックアウトとセレンの質問を確認しました。それらはすべて、開始時に HTML 要素用に定義された ID を持っていました。

ありがとうございます

4

2 に答える 2

6

簡単な答え: HTML 要素に ID を追加します

Web サイトが機能するためにこれらの属性は必要ありませんが、テスターの作業が非常に楽になります。

Knockout.js と Selenium を広範囲に使用する大規模な ASP.NET MVC 4 アプリケーションが作成されたプロジェクトで、まったく同じ問題が発生しました。フォーム要素については、ASP.NET MVC ユーティリティ メソッドを使用して、データ バインド式と組み合わせて出力 HTML を生成しました。ASP.NET MVC は、バッキング モデルに基づいて一意の NAME および ID 属性を自動的に生成します。

ただし、テーブルをレンダリングし、フォームまたはダイアログを表示する必要がある他のすべてのケースでは、これらの HTML 要素に ID 属性を追加することになりました。考えてみれば、これは要件の論理的な結果です。レイアウト (HTML) と動作 (JS) を結び付けるために ID と NAME が必要なくなるため、Knockout は素晴らしいです。ただし、Selenium などの他のフレームワークでは、これらの ID が存在する必要があります。

はい、複雑で肥大化した XPATH 式を使用して回避できます。しかし、これはテストの保守性を劇的に低下させます。私の経験では、ID を数百の HTML 要素に追加するのに 1 日もかからず、テスターの生産性が大幅に向上しました。

HTML をできるだけ少なくして、機能的な Web サイトを開発するのはよいことかもしれません。しかし、これによってウェブサイトがテストできなくなってしまうと、得るものよりも失うものが大きくなります。テスト容易性は機能要件ではありませんが、重要ではないという意味ではありません。

于 2012-08-28T17:38:41.557 に答える
0

html 要素に ID を追加する必要があります。アプリケーションはより複雑になり、おそらく複数のビュー モデルを同じページの異なるセクションにバインドする必要が生じるでしょう。ID が必要になります。たとえば、 で、注文したすべての製品を表示ASP.NET MVCする を作成し、partial viewこの部分ビューを注文プロセス全体で共有したい場合、この特定の部分ビュー セクションへのバインドが必要になります。

于 2012-08-28T17:44:28.810 に答える