新製品のクライアント側に Sencha ExtJS を使用することを決定し、クライアント側で自動機能テストを行う予定です。Ranorex、Selenium、Telerik Test Studio などのいくつかのツールを調べましたが、これまでのところ、Test Studio が他のツールよりも気に入っています。とにかく、私が尋ねている質問は、これらのツールのどれを使用するかに関係なく関連しています。
extjs コントロールの内部要素を取得するための推奨される方法を知りたいです。十分に明確にするために、例を挙げます。
数値フィールド コントロールがあり、「上へ」ボタンをクリックすると、フィールドの値が 1 単位増加することをテストしたいと思います。数値フィールドに一意の ID を設定したことに注意してください (id="testDurationHourNumberField")。数値フィールドには、次の (簡略化された) DOM 構造があります。
<table id="testDurationHourNumberField">
<tbody>
<tr id="testDurationHourNumberField-inputRow">
<td id="testDurationHourNumberField-labelCell">
<label id="testDurationHourNumberField-labelEl">Label:</label>
</td>
<td id="testDurationHourNumberField-bodyEl">
<table id="testDurationHourNumberField-triggerWrap">
<tbody>
<tr>
<td id="testDurationHourNumberField-inputCell">
<input id="testDurationHourNumberField-inputEl">
</td>
<td>
<div role="button" id="ext-gen1211"></div>
<div role="button" id="ext-gen1212"></div>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
これを行うには、入力要素 (id="testDurationHourNumberField-inputEl") とボタン (id="ext-gen1211") にアクセスする必要があります。これらの 2 つの要素にアクセスするための推奨される方法は?
これまでのところ、次のオプションがあります。
- ExtJS の内部 ID を使用します。
- これらは内部 ID であり、自分では制御できないため、後でページに別のコントロールを追加すると変更される可能性があります
- 同じページに対して、ブラウザごとに異なる ID を取得しているようです。たとえば、IE 10 では、Google Chrome で取得した ID とは異なるボタンの ID を取得します。
- 一意の ID でコントロールを取得し、内部 DOM 構造または属性を知ることで内部要素を取得します。
- ExtJS の次のバージョンにアップグレードするときに、内部 DOM 構造が変更されないか、一部の属性名が変更され、作成したテストを更新する必要があるかどうかがわからないため、この方法は使用したくありません。
- 例: 擬似コード: getById('testDurationHourNumberField').getElementByAttributeAndIndex('role=button', 0)
これを行うための推奨される方法を教えてください。
ありがとう、
ポール