首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >last()未应用

last()未应用
EN

Stack Overflow用户
提问于 2016-02-05 21:41:09
回答 1查看 126关注 0票数 2

我正在使用Selenium和Java编写一个测试,下面是我的DOM:

代码语言:javascript
复制
<body>    
<div class='t'><span>1</span></div> 
<div class='t'></div> 
<div class='t'><span>2</span></div> 
<div class='t'><span>3</span></div> 
<div class='t'><span>4</span></div> 
<div class='t'><span>5</span></div> 
<div class='t'><span>6</span></div> 
<div class='t'><span>7</span></div> 
<div class='tt'></div> 
</body>

当我使用://div[@class='t'][last()]时,我得到:

代码语言:javascript
复制
<div class="t"><span>7</span></div>

但当我使用://div[@class='t' and last()]时,我得到:

代码语言:javascript
复制
<div class="t"><span>1</span></div>
<div class="t"/>
<div class="t"><span>2</span></div>
<div class="t"><span>3</span></div>
<div class="t"><span>4</span></div>
<div class="t"><span>5</span></div>
<div class="t"><span>6</span></div>
<div class="t"><span>7</span></div>

就像last()没有应用于第二个xpath一样,为什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-05 23:03:33

//div[@class='t'][last()] ...意味着从索引为最后的匹配列表( @class='t')中选择元素,这正是您想要的。

对于//div[@class='t' and last()],对列表中的每个匹配应用已经计算过的值last()纯粹是基于to != 0,并且只有当last()为零时,才会导致div匹配器返回FALSE。换句话说,last()会使用而不是从列表中选择一个节点。这绝对不是你想要的。

例如,如果last()值为5,//div[@class='t' and 5]将返回列表中的每个匹配元素,因为5 != 0。

最终的结果是,如果匹配了任何节点(last() > 0),则将返回所有节点。

也请参阅: XSLT getting last element

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35234034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档