当前位置: 首页 > 知识库问答 >
问题:

XPath中的“//”和“/”之间的区别?

司徒云
2023-03-14

我在尝试Python-Selenium的XPath。

我使用这个链接来尝试教程中的一些XPath:

所以我尝试了XPaths的这两个变体。

//webengagedata//preceding-sibling::*
//webengagedata/preceding-sibling::*

返回9个结果

“//”如何匹配5个更多的结果?

共有1个答案

房泉
2023-03-14

child(/)和descendant-or-self(//)都是XPath中的轴。

>

  • //child::node()/的缩写。

    使用/选择节点的直接子节点。

    /vs//前面带有-sibling::*

    您的特定问题询问//preperate-sibling::*/preperate-sibling::*之间的区别。

    由于您的数据是异地且复杂的,因此让我们考虑当前的、更简单的XML:

    <r>
      <a/>
      <b>
        <c/>
        <d/>
      </b>
    </r>
    

    对于此XML,

    1. /r/preverti-sibling::*不选择任何内容,因为r没有前面的同级。
    2. /r//preperate-sibling::*选择r的所有后代节点或自节点的前面同级元素。即ABCD。(请记住,/r/prefored-sibling::*/descendant-or-self::node()/prefored-sibling::*的缩写,而不是/descendant-or-self::*/prefored-sibling::*)注意,尽管bd是no元素的前级同级,但它们是文本节点的前级同级,因为上面的XML在bd后面有空格。如果删除了所有空格,则只会选择AC
    3. /r/descendant::*/prefored-sibling::*选择r的所有后代元素的前面的同级元素。即AC。请注意,未选择bd是因为它们不是r的任何后代元素的前级同级元素--与前面的示例不同,文本节点不限定。

  •  类似资料:
    • 问题内容: 我有两个问题,可能需要一些帮助来理解它们。 和之间有什么区别?我知道这 意味着在单独的外壳中运行命令,然后将其传递给变量。有人可以帮助我理解这一点吗?如果我错了,请纠正我。 如果我们可以使用并且效果很好,那我为什么不能使用它呢?两者的执行周期有何不同? 问题答案: 语法是令牌级别的,因此美元符号的含义取决于其所在的令牌。表达式是现代代名词,代表命令替换;这意味着运行并将其输出放在此处。

    • 问题内容: 我对和感到困惑。我有两本PHP书。一个说它们是相同的,但是另一个说它们是不同的。我以为他们也一样。 他们不一样吗? 问题答案: 是按位与。请参见按位运算符。假设您这样做: 是逻辑AND。请参阅逻辑运算符。考虑一下这个真值表:

    • 问题内容: 这个问题已经在这里有了答案 : JavaScript比较中应使用哪个等于运算符(== vs ===)? (49个答案) 5个月前关闭。 和之间的区别是什么?我也看过和运算符。还有更多这样的运营商吗? 问题答案: 并且是严格的比较运算符: JavaScript具有严格和类型转换相等性比较。为了相等,要比较的对象必须具有相同的类型,并且: 当两个字符串在相同位置具有相同的字符序列,相同的长

    • 问题内容: 我错放了太多次了,我想我一直忘记,因为我不知道两者之间的区别,只是一个给了我我期望的价值,而另一个却没有。 为什么是这样? 问题答案: 是的简写形式(尽管请注意,该表达式只会被计算一次。) 是的,即指定一元的到。 例子:

    • 问题内容: 因此,我有一段简单的代码可以打印出整数1-10: 然后,如果仅在第3行上更改一个运算符,它将打印出无限数量的1整数(我知道为什么会这样做)。为什么在运行第二个程序时没有出现语法错误?如果赋值运算符后面跟着一个加法运算符,它不会调用语法错误吗? 问题答案: 与相同, 只是意味着。