无法通过webdriver定位动态元素

时间:2017-01-02 13:32:41

标签: java css xpath selenium-webdriver

我正在尝试查找动态元素并选中复选框。选中该复选框后,列表会自动收到值1。我尝试过xpath /css,但没有任何结果。

DOM

<table class="bulk_task_table">
<tbody>
<tr class="table_row">
<td class="servicenamewrapper">
<td style="margin:0; padding:0; border:0; width:0;"></td>
<td style="margin:0; padding:0; border:0; width:0;"></td>
<td class="skill_name" width="160px">
<div id="c23743691548_ctl" style="display:inline;">
<div id="c23743691548" class="skillwrapper" style="background-color:#FFFFFF;">
<span id="c525_ctl">
<div class="renderWithName">
<div class="left">
<label for="c525">service</label>
</div>
<div class="right">
<input id="c525" class="skill48" name="c525" type="checkbox">
</div>
</div>
</span>
<span id="c526_ctl">
<select id="c526" class="listbox skill48" name="c526" size="1">
<option value="0">0</option>
<option value="1">1</option>
</select>
</span>
</div>
</div>
</td>
<tr class="table_row">
<td class="servicenamewrapper"> </td>
<td class="skill_name">
<td class="skill_name">
<td class="skill_name">
<div id="c529_ctl" style="display:inline;">
<div id="c529" class="globalswitchwrapper">
<span id="c530_ctl">
<div class="renderWithName">
<div class="left">
<label for="c530">Service</label>
</div>
<div class="right">
<input id="c530" class="skill48" name="c530" type="checkbox">
</div>
</div>
</span>
<span id="c531_ctl">
<select id="c531" class="listbox skill48" name="c531" size="1">
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>

OBS:正如它在上面的代码中所看到的,有两个名为“service”的列表具有相同的类名。

1 个答案:

答案 0 :(得分:0)

您可以根据出现的顺序选择所需的动态元素。例如,如果要选择第一个出现的复选框,则可以使用以下 xpath

//table[@class='bulk_task_table']/descendant::input[starts-with(@class, 'skill')][1]

同样,如果要选择第二个出现的复选框,可以使用以下xpath:

//table[@class='bulk_task_table']/descendant::input[starts-with(@class, 'skill')][2]

此外,以同样的方式,您可以选择出现在动态元素中的其他控件。例如,如果要选择第二次出现的选择控件,可以使用以下xpath:

//table[@class='bulk_task_table']/descendant::select[starts-with(@class, 'listbox skill')][2]

如果需要,您也可以参数化谓词([])值。如果您有任何疑问,请与我们联系。

相关问题