<tr>
<td>Principal</td>
<td class="xh-highlight">Brian Jones</td>
</tr>
我使用以下命令返回包含单词“princpal”的 td:
//td[starts-with(., "Princ")]/following-sibling::td
//td[contains(., 'Princ')]/following-sibling::td
两者都工作正常,但我循环访问的一些 html 页面使用不同的术语,因此我需要查找不同的术语。例如,有些人使用“headmaster”,甚至只使用“head”:
<tr>
<td>Headmaster</td>
<td class="xh-highlight">Mrs Baines</td>
</tr>
我需要做的是使用某种 OR 语句,我一直在尝试这种变体:
//td[contains(., 'Princ' and contains ., 'head' and contains 'chief')]/following-sibling::td
因为我需要进行一些测试才能找到合适的。我无法让它返回任何结果。
最佳答案
尝试下面的表达式:
//td[contains(., 'Princ') or contains(., 'Head') or contains(., 'Chief')]/following-sibling::td
或
//td[matches(., ("Princ|Head|Chief"), "i")]/following-sibling::td
如果您的工具支持matches()
关于XPATH 使用多个 AND 语句与 CONTAINS 或 STARTS WITH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45817051/