我正在测试一个包含动态ID的网页。该页面包含一个删除图标,后面是多个位置的浏览图标,我无法单击这些图标,或者我必须说我无法编写正确的XPath来查找任何特定的图标。
以下是HTML代码的片段。
<tr class="tableNestedAttribute">
<td class="autosuggest-svl-cell">
<input name="odf_obs_fin_dept_text">
<div id="div_d31505e760_location"></div>
</td>
<td class="actions" nowrap="" align="right">
<div class="ui-browse-lookup-images ppm_field formFieldDisNoWidthReadOnly ">
<img id="d31505e7601" title="Remove Department OBS" name="Remove">
<img id="d31505e7600" title="Browse Department OBS" name="Browse">
</div>
</td>
</tr>
以上HTML代码位于页面的多个位置,但第一个td中的名称在每个位置都不同。
我的要求是点击与名称为odf_obs_fin_dept_text
的输入字段位于同一行的浏览。
尝试了以下和其他各种组合,但没有运气。
driver.findElement(By.xpath("//*[@name='odf_obs_fin_dept_text']/following-sibling::td[1]/descendant::div/img[@name='Browse']")).click();
答案 0 :(得分:1)
使用提供的示例,以下XPath:
//input[@name='odf_obs_fin_dept_text']/parent::td/following-sibling::td[1]/div/img[@name='Browse']
将找到下一个元素:
<img id="d31505e7600" title="Browse Department OBS" name="Browse">
或者,如果您想保持XPath不变,只需在parent::td
和//*[@name='odf_obs_fin_dept_text']
之间添加following-sibling::td[1]
//*[@name='odf_obs_fin_dept_text']/parent::td/following-sibling::td[1]/descendant::div/img[@name='Browse']