如何使用以下条件仅选择中间安装名称?
在表格中,我有多个表格行。这些表行内部是一个链接(在< td>内部),其中包含特定安装的URL和名称,可以通过以下方式轻松选择:
//td[contains(@class, 'install-name')]/a/text()
我只想选择锁定的安装,而不是选择所有安装名称。只有锁定的安装包含位于链接同级元素内的此元素。
//div[@class="install-details"]/span/i[contains(@class, 'password-protected')]
这是HTML:
<tr class="install odd" role="row">
<td class="install-name sorting_1" data-sort="demo"><a href="/installs/demo">demo</a>
<div class="install-details">
<span>
</span>
<span class="php-version">
</span>
</div>
</td>
</tr>
<tr class="install even" role="row">
<td class="install-name sorting_1" data-sort="adam">
<a href="/installs/adam">adam</a>
<div class="install-details">
<span>
<i class="install-status-icon password-protected fa fa-lock" title="Password Protected"></i>
</span>
<span class="php-version">
</span>
</div>
</td>
</tr>
<tr class="install odd" role="row">
<td class="install-name sorting_1" data-sort="amy">
<a href="/installs/amy">amy</a>
<div class="install-details">
<span>
</span>
<span class="php-version">
</span>
</div>
</td>
</tr>
如何使用上述条件仅选择中间安装名称?
一起使用的CodePen答案 0 :(得分:2)
您可以将第二个XPath用作第一个XPath的附加谓词([]
中的表达式),如下所示:
//td[contains(@class, 'install-name')]
[div[@class="install-details"]/span/i[contains(@class, 'password-protected')]]
/a/text()
<强> xpath demo
强>
注意第二个谓词应该将结果限制为那些包含“密码保护”的td
的结果。信息。
答案 1 :(得分:1)
如何向后遍历HTML。
//i[contains(@class, 'password-protected')]/parent::span/parent::div[@class='install-details']/preceding-sibling::a/text()