如果我使用follow-sibling,则无法通过XPath找到元素::

时间:2015-04-17 20:46:02

标签: html xpath selenium-webdriver

我使用以下XPath来定位我的元素:

//tbody/*[contains(.,'abcabc')]/following-sibling::div[1]/a[@class="editbtn"]
到目前为止,

//tbody/*[contains(.,'abcabc')]取出了我的元素。

然而,当我在那之后使用/following-sibling::div[1]/a[@class="editbtn"]时, 甚至/following-sibling::div[1],我得到:

  

无法找到元素:

我的HTML看起来像:

<tbody>
    <tr>
        <td>
            <div>
                 <a href="#!/service/1/policies" data-id="1">abcabc</a>
                 <div class="pull-right">
                     <a class="editbtn" title="Edit" href="href1" data-id="1">
                         <i class="icon-edit"/>
                     </a>
                     <a class="deletebtn" title="Delete" href="javascript:void(0);" data-id="1">
                         <i class="icon-trash"/>
                     </a>
                 </div>
             </div>
         </td>
     </tr>
</tbody>

1 个答案:

答案 0 :(得分:0)

当您查找//tbody/*[contains(.,'abcabc')]时,您没有选择您认为自己选择的内容。

您认为您正在选择包含'abcabc'的a元素,但您实际上是在选择tbody本身,因为其字符串值也包含'abcabc'。 tbody元素没有以下兄弟姐妹,所以你什么也得不到。

要选择示例中div之后的a,请指定//a,而不是使用*来匹配任何元素:

//tbody//a[contains(.,'abcabc')]/following-sibling::div[1]

这将解决您的following-sibling问题,并选择class="pull-right" div元素后面的abcabc a