html - 子 XPath 轴和后代 XPath 轴有什么区别?

标签 html xml selenium xpath

<div class='ABC'>
    <a href='url.com'></a>
    <div class='XXX'></a>
    <div id='EDF'>
        <a href='url.com'></a>
    </div>  
    <div class='XYZ'></div>
</div>

根据我的理解 //div[@class='ABC'//child::*] 应该产生 4 和 //div[@class='ABC 的搜索结果'//descendant::*] 应该产生 5。但实际上,两者都产生搜索结果 5。

谁能帮我理解其中的区别吗?

最佳答案

首先,将标记修复为格式良好( <div> 不能用 </a> 关闭):

<div class='ABC'>
    <a href='url.com'></a>
    <div class='XXX'></div>
    <div id='EDF'>
        <a href='url.com'></a>
    </div>  
    <div class='XYZ'></div>
</div>

然后,修复您的 XPath 语法:

  1. count(//div[@class='ABC']/child::*)返回 4。
  2. count(//div[@class='ABC']/descendant::*)返回 5。

这应该符合您的期望,即XPath 子轴仅选择直接子级,而 XPath 后代轴递归地选择子级和子级的子级

关于html - 子 XPath 轴和后代 XPath 轴有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47512532/

相关文章:

java - 无法使用模式匹配删除java中所有出现的html标签

html - 如何在不考虑 float 元素的情况下将文本居中对齐

c# - 是否可以在 xpath 表达式中只指定一次命名空间前缀?

java - 需要在WebDriver中选中一个复选框

python - 脚本无法解析重定向网址中的标题

user-interface - 如何为 webgl 应用程序创建验收测试?

javascript - 没有图像或其他元素的 document.onload(仅 HTML)

ruby-on-rails - 使用 ActiveRecord::Serialization.to_xml 构建动态字段

java - 从 Activity 返回时如何部分填充进度条?

html - 倾斜的 Div 悬停问题