当前位置: 首页 > 面试题库 >

为什么XPath last()函数无法正常运行?

梁丘俊人
2023-03-14
问题内容

我正在使用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>

问题答案:

这是XPath混乱的常见原因。 首先是简单的部分:

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

到目前为止,正常的东西。 接下来是棘手的部分:

  1. b 兄弟姐妹中a元素之下)选择最后一个元素:
    //a//b[last()]
    

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

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

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



 类似资料:
  • 问题内容: 看来AngularJS的不起作用。它不适用于数字字符串。难道我做错了什么?我应该使用吗? 我需要一些东西来查看字符串是否是一个数字(实际上是一个数字),除非我乘以1,否则我不会这么做,但是如果我这样做,那么它将始终为真。另外是不是一个数字(定义)等应该返回false。 问题答案: 在 JavaScript中 ,。 例如,如果需要将 字符串 识别为 Number ,则将其转换为 Numb

  • 问题内容: 我试图通过使用该方法销毁所有会话变量,但是在使用此方法之后,这些值不会被销毁。 为什么不工作? 还有其他方法可以销毁PHP中的会话吗? 问题答案: 使用后,会话将在后台被销毁。由于某种原因,这不会影响已为此请求填充的中的值,但在以后的请求中将为空。 如果需要,您可以手动清除()。

  • 问题内容: 这是我的代码: 这是我的输出: 我的理解 是。因此,应该首先一个号码,然后松开,然后给到线或。所以,一次应该有一个数字,对吧? 但是为什么我的代码一次是两个或三个数字?我做错什么了吗(我是新手)? 问题答案: 虽然确实不是同步的,但是它访问变量。 即使您同步访问权限,它也无济于事,因为下一种情况仍然可能: 线程1增量 线程2增量 线程1的打印值 线程2的打印值 要解决此问题,您需要增加

  • 问题内容: 为什么这不起作用? 实际上,我所有的元素都不可见。如果我在选择器中删除对的引用,则确实会显示div中的最后一个,但这不是我想要的。 当然,我只能一直保留一个,但这只是一个reveal.js演示文稿,我无法控制JavaScript。 如何选择带有类的div中的最后一个元素?我不想为此使用JavaScript。 问题答案: 您的问题是,您正在阅读并认为它可以用作选择器,而实际上它 仅 表示

  • 从重新索引文档: 使用可选的填充逻辑将DataFrame与新索引一致,将NA/NaN放置在上一个索引中没有值的位置。除非新索引与当前索引等效,并且Cope=False,否则将生成新对象。 因此,我认为我可以通过在适当的位置(!)设置复制=False来重新排序。然而,我似乎得到了一个副本,需要再次将其分配给原始对象。我不想把它分配回去,如果我能避免它的话(原因来自于另一个问题)。 这就是我正在做的:

  • 问题内容: 我试图在sed的正则表达式中使用它,但是它不起作用: 但这是可行的: 问题答案: 是一个开关,而不是正则表达式宏。如果要使用一些预定义的“常量”而不是表达式,请尝试运行以下代码: