1

Web アプリケーションのテストを自動化しています。名前、メールアドレス、電話番号のテキストボックスを入力する必要がある管理者を作成するシナリオがあります。ただし、このテキスト ボックスの ID は動的です。

userName, id='oe-field-input-41'
Email, id='oe-field-input-42'
phone number, id='oe-field-input-43'

最初のクエリ: ID の数値は動的です。動的な値を処理するために xpath を使用するのは面倒です。

xpath = //*[starts-with(@id,'oe-field-input-')]

これで、最初のテキストボックスにテキストを正常に入力します

2 番目のクエリ: 次の 2 つのテキスト ボックスに同じ xpath を使用できません。名前フィールドにのみ電子メールと電話番号が入力されるためです。

この動的な値の処理を解決するのを手伝ってください。

編集:htmlコードを追加、

<table class="oe_form_group " cellspacing="0" cellpadding="0" border="0">
 <tbody>
  <tr class="oe_form_group_row">
   <td class="oe_form_group_cell oe_form_group_cell_label" width="1%" colspan="1">
    <td class="oe_form_group_cell" width="99%" colspan="1">
    <span class="oe_form_field oe_form_field_many2one oe_form_field_with_button">
     <a class="oe_m2o_cm_button oe_e" tabindex="-1" href="#" draggable="false" style="display: inline;">/</a>
     <div>
    </span>
   </td>
  </tr>
  <tr class="oe_form_group_row">
   <td class="oe_form_group_cell oe_form_group_cell_label" width="1%" colspan="1">
    <td class="oe_form_group_cell" width="99%" colspan="1">
    <span class="oe_form_field oe_form_field_email">
     <div>
     <input id="oe-field-input-35" type="text" maxlength="240">
     </div>
    </span>
   </td>
  </tr>
  <tr class="oe_form_group_row">
   <td class="oe_form_group_cell oe_form_group_cell_label" width="1%" colspan="1">
    <td class="oe_form_group_cell" width="99%" colspan="1">
    <span class="oe_form_field oe_form_field_char">
     <input id="oe-field-input-36" type="text" maxlength="32">
    </span>
   </td>
  </tr>
  <tr class="oe_form_group_row">
   <td class="oe_form_group_cell oe_form_group_cell_label" width="1%" colspan="1">
    <td class="oe_form_group_cell" width="99%" colspan="1">
    <span class="oe_form_field oe_form_field_char">
     <input id="oe-field-input-37" type="text" maxlength="32">
    </span>
   </td>
  </tr>
  <tr class="oe_form_group_row">
 </tbody>
4

5 に答える 5

1

ラベルなどで一意の要素を見つける別の方法を試すことができます。例えば:

  • css=.oe_form_group_row:contains(case_sensitive_text) 入力
  • xpath=//tr[@class = 'oe_form_group_row'][contains(.,'case_sensitive_text')]//input

ISFWを使用している場合は、そのようなフォーム フィールド用のカスタム コンポーネントを作成する必要があります。

于 2013-08-01T08:44:34.770 に答える
0

ここでの問題は、XPath が正しい選択を行うことですが、クエリに対して複数の結果が返される場合、Selenium は常に最初のものを選択します。

以下を使用して、各入力フィールドを直接選択できます。

//input[1]
//input[2]
//input[3]

他の入力フィールドがある場合は、次のように id 属性inputを持つノードのみを選択することで、選択を絞り込むことができます。oe-field-input

//input[starts-with(@id,'oe-field-input-')][1]
//input[starts-with(@id,'oe-field-input-')][2]
//input[starts-with(@id,'oe-field-input-')][3]
于 2013-08-01T06:10:35.657 に答える
0

以下の XPATH を使用できます。

//tr[@class = 'oe_form_group_row'][2]//input 最初のテキスト ボックス

//tr[@class = 'oe_form_group_row'][3]//input 2 番目のテキスト ボックス用

//tr[@class = 'oe_form_group_row'][4]//input 3 番目のテキスト ボックス。

above xpath をテストしました。

しかし、開発アクセス権を持っている場合、開発者に作成を依頼するより良い方法は、標準化され、「name」、「value」などのタグを推奨するか、Email:、Password などのテキストを添付することです。したがって、これらを xpath で使用できます。

于 2013-08-05T09:52:35.343 に答える