为什么XPath last()函数不能按我预期的那样工作?

我正在使用Java和Selenium编写测试。我需要将另一个元素内的最后一个元素,所以我使用last()函数,但问题是,当我申请时,它并不总是带给我最后一个:

//a//b[last()]

 <a> 

<l>

<b>asas</b>

</l>

<b>as</b>

</a>

得到<b>as</b>,它带给我:

<b>asas</b>

<b>as</b>

但是当我将其应用于:

 <a>      

<b>asas</b>

<b>as</b>

</a>

它带给我:

<b>as</b>

回答:

首先是简单的部分:

  • //a选择a文档中的所有元素。
  • //a//b选择b文档中属于a元素后代的所有元素。

到目前为止,正常的东西。

  1. b在 (a元素之下)选择最后一个元素:
    //a//b[last()]

此处,过滤是b选择标准的一部分,因为[]优先级高于//

  1. 要选择 的最后一个b元素(在元素之下): a
    (//a//b)[last()]

在此,由于last()所有优先b元素()均用于覆盖默认优先级,因此它是所有选定元素列表上的索引。

以上是 为什么XPath last()函数不能按我预期的那样工作? 的全部内容, 来源链接: utcz.com/qa/400847.html

回到顶部