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

Unable to find element by XPath if I use following-sibling::

我正在使用以下 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],我得到:

Unable to locate element:

我的 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>

当您寻找 //tbody/*[contains(.,'abcabc')] 时,您 select 并不像您认为的那样 select。

您认为您正在 select 包含 'abcabc' 的 a 元素,但实际上您 select 正在 tbody 本身,因为它的字符串值还包含 'abcabc'。 tbody 元素没有后续兄弟元素,因此您什么也得不到。

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

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

这将解决您的 following-sibling 问题和 select class="pull-right" div abcabc a 元素之后的问题。