html - 基于多个子级的 XPath 父级

标签 html xml selenium xpath

如何选择父项 <tr>元素包含 cccddd其中,没有其他?

即来自下面的 XML:

<table>
    <tr>
        <td>aaa</td>
        <td>bbb</td>
        <td>select</td>
    </tr>
    <tr>
        <td>ddd</td>
        <td>ccc</td>
        <td>select</td>
    </tr>
    <tr>
        <td>ccc</td>
        <td>ddd</td>
        <td>select</td>
    </tr>
    <tr>
        <td>aaa</td>
        <td>ccc</td>
        <td>select</td>
    </tr>
</table>

选择此行:

<tr>
    <td>ccc</td>
    <td>ddd</td>
    <td>select</td>
</tr>

或者,如何选择第三个 td (其中写有 select)在 td 的同一行与ccc & ddd

最佳答案

XPath 表达式包含多个定位步骤。每个步骤都会为谓词(在 [...] 内)或后续步骤创建上下文。 最后步骤包含有效选择的结果集。您可以在任何步骤中应用一个或多个谓词,以减少集合。

此表达式选择 tr包含 td 的元素字符串值为 aaa 的元素和一个 td字符串值为 bbb 的元素.

//tr[td='aaa' and td='bbb']

此表达式将选择一个包含两个 td集合第二个和第三个 <td>select</td> 中的节点 ( <tr> ) s(具有 td='ccc' and td='ddd' 的那些:

//tr[td='ccc' and td='ddd']/td[3]

除了使用and之外,您还可以堆叠谓词。每个谓词都会减少结果集,从而创建一个供后续谓词运行的上下文。这与上面的表达式具有相同的效果:

//tr[td='ccc'][td='ddd']/td[3]

关于html - 基于多个子级的 XPath 父级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24353063/

相关文章:

xml - 深度优先读取大型 XML 文件

c# - 序列化/反序列化 XML 数据时,XML 元素和类属性是否具有相同的名称?

javascript - 在 Cucumber 中测试 JQuery UI slider

html - 视频-声音编解码器AC3(MKV)

html - CSS 属性作为 SASS 混合值

java - 如何使用 jdom 检查文件中是否存在元素

java - org.openqa.selenium.SessionNotCreatedException : session not created: This version of ChromeDriver only supports Chrome version 75 using Selenium

html - 当点击托管在 web 上的目录的 url 时,如何创建默认模板?

php - 首次访问页面时,Drupal 生成的 HTML 上方出现神秘数字

selenium - 如何修复 docker 容器中的 "org.openqa.selenium.WebDriverException: unknown error: Chrome failed to start: crashed"