硒在兄弟姐妹里面

时间:2014-03-26 13:11:32

标签: selenium xpath selenium-webdriver

有没有办法在Selenium Webdriver中进一步点击兄弟姐妹?例如,这是HTML:

<tr class="rich-table-row xx-datalist-even" onmouseover="Element.addClassName(this, 'xx-datalist-mouseover')" onmouseout="Element.removeClassName(this, 'xx-datalist-mouseover')">
    <td class="rich-table-cell xx-datalist " id="userTableForm01:usersTableData:264:j_id102" style="text-align:center; width:20px;">
        <img src="/static/images/graphics/status1.gif" title="Disabled" />
    </td>
    <td id="userTableForm01:usersTableData:264:col1" class="rich-table-cell xx-datalist">
        <span id="userTableForm01:usersTableData:264:author_id">2377</span>
    </td>
    <td id="userTableForm01:usersTableData:264:col2" class="rich-table-cell xx-datalist">seleniumtest2312</td>
    <td id="userTableForm01:usersTableData:264:col3" class="rich-table-cell xx-datalist">
        <span style="margin-right:3px">Test2312</span>
        Selenium
    </td>
    <td class="rich-table-cell xx-datalist " id="userTableForm01:usersTableData:264:col4" style="text-align:center;">
        <input type="checkbox" name="userTableForm01:usersTableData:264:j_id111" onclick="A4J.AJAX.Submit('userTableForm01',event,{'similarityGroupingId':'userTableForm01:usersTableData:264:j_id112','parameters':{'userTableForm01:usersTableData:264:j_id112':'userTableForm01:usersTableData:264:j_id112'} } )" />
    </td>
    <td id="userTableForm01:usersTableData:264:col6" class="rich-table-cell xx-datalist">
        <a id="userTableForm01:usersTableData:264:enable_link" href="#" style="margin-right:5px" onclick="if(typeof jsfcljs == 'function'){jsfcljs(document.getElementById('userTableForm01'),{'userTableForm01:usersTableData:264:enable_link':'userTableForm01:usersTableData:264:enable_link'},'');}return false">
            <span id="userTableForm01:usersTableData:264:enable_link_text" class="xx-datalist">Enable</span>
        </a>
        <a id="userTableForm01:usersTableData:264:edit_link" href="#" style="margin-right:5px" onclick="if(typeof jsfcljs == 'function'){jsfcljs(document.getElementById('userTableForm01'),{'userTableForm01:usersTableData:264:edit_link':'userTableForm01:usersTableData:264:edit_link'},'');}return false">
            <span id="userTableForm01:usersTableData:264:edit_link_text" class="xx-datalist">Edit</span>
        </a>
        <a id="userTableForm01:usersTableData:264:remove_link" href="#" onclick="if(typeof jsfcljs == 'function'){jsfcljs(document.getElementById('userTableForm01'),{'userTableForm01:usersTableData:264:remove_link':'userTableForm01:usersTableData:264:remove_link'},'');}return false">
            <span id="userTableForm01:usersTableData:264:remove_link_text" class="xx-datalist">Delete</span>
        </a>
    </td>
</tr>

现在,这是一个比显示的更大的表,所以有更多的用户更多的tr。 ID都是自动生成的,每次都不同,我试图点击“启用”链接,虽然我可以使用的同一行中唯一唯一的东西是用户名seleniumtest2312,它带来了我对此:

    driver.findElement(By.xpath("//td[text()='seleniumtest2312']/following-sibling::td[3]/span[text()='Enable']")).click();

但它不起作用(没有这样的元素)。

如果有更好的方法可以解决这个问题,我会很乐意尝试。

1 个答案:

答案 0 :(得分:0)

你的XPath的最后一部分有点过了:

following-sibling::td[3]/span[text()='Enable']

因为您正在寻找的<span>不是<td>的直接孩子。您可以尝试使用此XPath:

//td[.='seleniumtest2312']/following-sibling::td[3]/a/span[.='Enable']