正确使用xpath轴来定位

时间:2013-11-08 11:25:35

标签: html xpath selenium selenium-webdriver

我正在测试一个包含动态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();

1 个答案:

答案 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']