私は次の例を示します。ここでは、選択したレポートによってフィールドが表示されるかどうかが示されます。Selenium WebDriverを使用して動的IDを持つフィールドを検索するc#
By Field1 = By.Id("ctl00_MainContent_cntrlDynamicField1");
By Field2 = By.Id("ctl00_MainContent_cntrlDynamicField2");
By Field3 = By.Id("ctl00_MainContent_cntrlDynamicField3");
HTML::
<table>
<tbody>
<tr>
<td>
<span>Field1</span>
</td>
<td>
<select id="ctl00_MainContent_cntrlDynamicField1"
<option value="1">Yes</option>
<option value="0">No</option>
</select>
</td>
</tr>
<tr>
<td>
<span>Field2</span>
</td>
<td>
<select id="ctl00_MainContent_cntrlDynamicField2"
<option value="1">Yes</option>
<option value="0">No</option>
</select>
</td>
</tr>
<tr>
<td>
<span>Field3</span>
</td>
<td>
<select id="ctl00_MainContent_cntrlDynamicField3"
<option value="1">Yes</option>
<option value="0">No</option>
</select>
</td>
</tr>
</tbody>
</table>
私が選択した場合(第1報)
1) Then all Fields are displayed
2) Field 1: (id="ctl00_MainContent_cntrlDynamicField1")
3) Field 2: (id="ctl00_MainContent_cntrlDynamicField2")
4) Field 3: (id="ctl00_MainContent_cntrlDynamicField3")
私が選択した場合は(レポートセレンコードフィールドで
は次のように定義されています3)1) Then Field 2 is removed (id="ctl00_MainContent_cntrlDynamicField2")
2) As only 2 Fields are now displayed on the screen the ID's are now as follows
3) Field 1: (id="ctl00_MainContent_cntrlDynamicField1")
4) Field 3: (id="ctl00_MainContent_cntrlDynamicField2")
フィールド3を使用したいのにIDは変更されているため、自動化は常に失敗します。
セレンスクリプトは、xlsシートからデータ駆動型です。
IDが動的に変更されても、引き続きフィールド3を見つけることができます。