我正在使用Selenium和Java编写一个测试,下面是我的DOM:
<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()]时,我得到:
<div class="t"><span>7</span></div>但当我使用://div[@class='t' and last()]时,我得到:
<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一样,为什么?
发布于 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),则将返回所有节点。
https://stackoverflow.com/questions/35234034
复制相似问题