position()函数给我带来了错误的数据

时间:2016-02-03 23:38:41

标签: java selenium selenium-webdriver

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

为什么两者的结果相同:

//div[position()>1 and @class='t' and .//span ]

//div[position()>2 and @class='t' and .//span ]

结果是:

<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>

我对第一个xpath的期望是相同的,但对于第二个我认为它应该是:

<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>

2 个答案:

答案 0 :(得分:1)

我知道xpath应该是//div[ @class='t' and .//span ][position()>2],所以它首先选择div作为t属性的所有class和至少一个<span> }标签内部然后它获取第一个位置后的webelement数组

答案 1 :(得分:0)

xpath下面:

//div[position()>1 and @class='t' and .//span ]

清楚地指定div应该包含class ='t',span标记并且它的位置应该大于1.在2nd div中没有​​span标记。因此上面的xpath打印了第三个div的结果。

在下面的xpath中表示平均值:

//div[position()>2 and @class='t' and .//span ]

还指定div应包含class ='t',span标记及其位置应大于2.表示结果从第三个div开始。

div在第三位是

 <div class='t'><span>2</span></div> 

它包含class ='t'和span标记,div的位置也大于2.