0

我的页面有一个包含 11 列的表格,给定第 2 列的文本值,我想单击同一行的第 11 列(箭头按钮)。

我的 DOM 看起来像这样:

<table id=”atab”  width=”100%” class=”at-class”&gt;`  
    <thead>…&lt;/thead>  
    <tbody>  
        <tr>...</tr>  
        <tr>  
            <td>…&lt;/td>  
            <td>  
                <a href=”/abc/def/ghi/prop?id=1”&gt;grp1</a>  
            </td>  
            <td>…&lt;/td>  
            <td>…&lt;/td>  
            <td>200</td>  
            <td>…&lt;/td>  
            <td>…&lt;/td>  
            <td>…&lt;/td>  
            <td>…&lt;/td>  
            <td>…&lt;/td>  
            <td>  
                <ul class=”dropwd”  
                    <li class>  
                        <input class=”a-act a-menu-button” type=”button” value=”^”  
                        <ul class=”sub_menu” style=”vis””&gt;…&lt;/ul>  
                    </li>  
                </ul>  
            </td>  
        <tr>  
    <tbody>  

这有效(因为我刚刚从检查元素中获取了 xpath)。虽然我不能使用它。

myxpath = "//*[@id='atab']/tbody/tr[2]/td[11]/ul/li/input”
myxpath.click()

我需要使用包含,然后抓住兄弟姐妹(第 11 位,从我的包含位置开始的第 9 位)。我为 myxpath 尝试了以下操作,但找不到该元素。我在其他地方使用了相同的格式,这很好。唯一的区别是这一次,我没有得到相邻的兄弟姐妹,而是第 x 个兄弟姐妹。

在哪里campg = grp1

//table[@class='at-class']//td[contains(text(),' " + campg + " ')]/following-sibling::td[9]/ul/li/input
//* [@id='atab']//td[contains(text(),' " + campg + " ')]/following-sibling::td[9]/ul/li/input
//* [@id='campaigns']//td[contains(text(),' " + campg +  " ')]/following-sibling::td[9]/ul/li/input[@type=’button’]

我也尝试了其他组合。

4

1 回答 1

7

此 XPath 表达式选择表,查找匹配的行(其中第二列包含您要搜索的针),然后在该行中选择具有相关输入元素的第 11 列。

无需使用祖先和跟随使用任何相对轴步骤,只有下降树通常更快,更易读且不易出错。

//table[@id='atab']//tr[contains(td[2], 'needle')]/td[11]/ul/li/input
于 2013-08-06T09:35:49.270 回答