XML是:
<table class="list members">
<thead>
<tbody>
<tr id="member-141568" class="odd member">
<td class="name user">
<td class="roles">
<td class="buttons">
</tr>
<tr id="member-141576" class="even member">
<td class="name user">
<td class="roles">
<td class="buttons">
</tr>
<tr id="member-141573" class="odd member">
<td class="name user">
<a class="user active" href="/users/144550">Kay Kay</a>
</td>
<td class="roles">
<td class="buttons">
<a class="icon icon-edit" onclick="$('#member-141573-roles').hide(); $('#member-141573-roles-form').show(); return false;; return false;" href="#">Edit</a>
<a class="icon icon-del" href="/memberships/141573" data-method="delete" rel="nofollow" data-remote="true">Delete</a>
</td>
</tr>
</tbody>
</table>
主要思想是在网站列表中获取特定用户的“编辑”按钮。
那么如何为特定用户(//a[@class="icon icon-edit" and text()='Edit']
)获取“编辑”元素(//a[@class="user active" and text()="Kay Kay"]
)?
答案 0 :(得分:1)
问:获取特定用户的“编辑”按钮 我认为应该是:
//tr[.//a[@class='user active' and text()='Kay Kay']]//a[@class='icon icon-edit' and text()='Edit']
与用户一起找到tr:
//tr[.//a[@class='user active' and text()='Kay Kay']]
和此tr中的编辑按钮:
//a[@class='icon icon-edit' and text()='Edit']
更新:
感谢 har07第一次正确回答我在上面的tr表达式中添加了一个点(.
)。
答案 1 :(得分:1)
要组合这两个表达式,首先需要找到最近的共同祖先,在本例中为tr
元素:
//tr[.//a[@class='user active' and text()='Kay Kay']]
上面应该找到包含特定用户的tr
元素。请注意,谓词表达式中.
之前的/
是,以使其相对于当前tr
上下文。此外,由于a
没有太深嵌套,我建议使用完整路径。它会使XPath 有点更有效,同时保持表达式同样简洁:
//tr[td/a[@class='user active' and text()='Kay Kay']]
然后,从此tr
继续使用第二个XPath返回目标元素的路径:
//a[@class="user active" and text()="Kay Kay"]
以下是我将用于此任务的整个XPath:
//tr[td/a[@class="user active" and .="Kay Kay"]]//a[@class='icon icon-edit' and .='Edit']