1

私がテストしているアプリケーションのすべての要素には、動的 IDがあります。ページを更新せずにリプレイするとテストは常に成功しますが、ページを更新するとすぐに、すべての要素の ID がランダムに変化し、セレンが記録された ID と新しい ID を一致させることができないため、テストは失敗します。

Xpath-position を使用しようとしましたが、一部のオブジェクトでは機能しますが、ドロップダウン リストとボタンの場合は機能しません。

オブジェクトの Xpath ( JAVAのメソッドまたは S* elence *) を見つける方法、またはドロップダウン リストとボタン用の新しいロケーター ファインダーを作成する方法を教えてください。

私をからかっているドロップダウンのプロパティ(Inspected by Firebug )を表示できます。

ドロップダウンのプロパティ:

<div id="ext-gen1345" class="x-trigger-index-0 x-form-trigger x-form-arrow-trigger x-form-trigger-last x-unselectable" role="button" style="-moz-user-select: none;"></div>

ドロップダウンのプロパティ* Choice *:

<ul>
    <li class="x-boundlist-item" role="option">Rescue</li>
</ul>
4

2 に答える 2

2

投稿する前に検索してください。私はこれに何度も答えています。

ExtJS ページは、特に要素を見つける際にテストするのが困難です。

私が役立つと思うヒントのいくつかを次に示します。

  • 動的に生成された ID は決して使用しないでください。お気に入り(:id, 'ext-gen1345')
  • 絶対/無意味な XPath を使用しないでください。//*[@class='someclass']/li/ul/li[2]/ul/li[2]/table/tbody/tr/td[2]/div

  • 意味のある自動生成された部分 ID とクラス名を利用します。(そのため、私が提案できるように、例でより多くの HTML を表示する必要があります。)

    たとえば、のExtJS グリッドの例:(:css, '.x-grid-view .x-grid-table')便利です。複数のグリッドがある場合は、それらにインデックスを付けるか、識別可能な先祖を探します(:css, '#something-meaningful .x-grid-view .x-grid-table')。あなたの場合、(:css, '#something-meaningful .x-form-arrow-trigger')

  • ボタンのテキストを活用します。

    たとえば、このExtJS の例: XPath を使用できます.//li[contains(@class, 'x-boundlist-item') and text()='Rescue']。ただし、この方法は CSS セレクターや多言語アプリケーションには適していません。

  • テストする最善の方法は、ソース コードで意味のあるクラス名を作成することです。ソース コードにアクセスできない場合は、マネージャに相談してください。ExtJS アプリケーションに対して Selenium を使用するのは、実際には開発者の仕事です。ExtJS はカスタム クラス名にclsとを提供するため、ソース コードに追加でき、Selenium は で取得できます。tdClscls:'testing-btn-foo'(:css, '.x-panel .testing-btn-foo')

このトピックについて私が行った他の回答:

于 2013-10-29T20:53:07.270 に答える