2016-08-04 89 views
0

我有多个单元的网页比如上例中,我想首先选择50个复选框阵列的前n个元素......如何选择XPath的元素

<td class="col-xs-0"> 
<input type="checkbox" ng-click="selectedRun(record.file_name, record.run_status);" /> 
</td> 

我尝试了用XPATH如:

.//*/td[@class="col-xs-0"]//input[@ng-click="selectedRun(record.file_name, record.run_status);"][position() <= 50] 

但它给了我页面上的所有节点,我需要第一个50 ...错误在哪里?谢谢。

+1

在第一眼你的例子看起来是正确的。请用可以复制问题的例子扩展您的问题...选择例如只是前两个节点。 – Markus

回答

0

position()给每个迭代的指数相对于它的父,你是从你的XPath获得input元素相对于td并有各自td下面没有50个input元素。首先让符合标准,然后找到位置,所有td小号

//td[@class="col-xs-0" and count(child::*[name()="input"][@type="checkbox" and @ng-click="selectedRun(record.file_name, record.run_status);"])>0][position()<=50]

这XPath的工作原理:

相反,下面的XPath会为你工作。

样品输入:

<root> 
<td class="col-xs-0"> 
<input type="checkbox" ng-click="selectedRun(record.file_name, record.run_status);" /> 
</td> 
<td class="col-xs-0"> 
<input type="checkbox" ng-click="selectedRun(record.file_name, record.run_status);" /> 
</td> 
<td class="col-xs-0"> 
<input type="checkbox" ng-click="selectedRun(record.file_name, record.run_status);" /> 
</td> 
<td class="col-xs-0"> 
<input type="checkbox" ng-click="selectedRun(record.file_name, record.run_status);" /> 
</td> 
<td class="col-xs-0"> 
<input type="checkbox" ng-click="selectedRun(record.file_name, record.run_status);" /> 
</td> 
<td class="col-xs-0"> 
<input type="checkbox" ng-click="selectedRun(record.file_name, record.run_status);" /> 
</td> 
<td class="col-xs-0"> 
<input type="checkbox" ng-click="selectedRun(record.file_name, record.run_status);" /> 
</td> 
<td class="col-xs-0"> 
<input type="radio" ng-click="selectedRun(record.file_name, record.run_status);" /> 
</td> 
<td class="col-xs-0"> 
<input type="radio" ng-click="selectedRun(record.file_name, record.run_status);" /> 
</td> 
<td class="col-xs-0"> 
<input type="radio" ng-click="selectedRun(record.file_name, record.run_status);" /> 
</td> 
<td class="col-xs-0"> 
<input type="radio" ng-click="selectedRun(record.file_name, record.run_status);" /> 
</td> 
</root> 

中的XPath //td[@class="col-xs-0" and count(child::*[name()="input"][@type="checkbox" and @ng-click="selectedRun(record.file_name, record.run_status);"])>0][position()<=3]回报:

Element='<td class="col-xs-0"> 
    <input type="checkbox" ng-click="selectedRun(record.file_name, record.run_status);" /> 
</td>' 
Element='<td class="col-xs-0"> 
    <input type="checkbox" ng-click="selectedRun(record.file_name, record.run_status);" /> 
</td>' 
Element='<td class="col-xs-0"> 
    <input type="checkbox" ng-click="selectedRun(record.file_name, record.run_status);" /> 
</td>' 

,其中作为XPath的//td[@class="col-xs-0" and count(child::*[name()="input"][@type="radio" and @ng-click="selectedRun(record.file_name, record.run_status);"])>0][position()<=2]回报:

Element='<td class="col-xs-0"> 
    <input type="radio" ng-click="selectedRun(record.file_name, record.run_status);" /> 
</td>' 
Element='<td class="col-xs-0"> 
    <input type="radio" ng-click="selectedRun(record.file_name, record.run_status);" /> 
</td>' 
+0

// @ td [@ class =“col-xs-0”和count(child :: * [name()=“input”] [@ type =“checkbox”and @ ng-click =“selectedRun(record.file_name ,record.run_status);“])> 0] [position()<= 50] - 返回0个节点...我可以重建xpath到// * [@ type =”checkbox“and @ ng-click = “selectedRun(record.file_name,record.run_status);”] [position()<= 50]这个假设选择所有节点并返回50,但现在它返回100(表中有100行) –

+0

你能显示你的输入文件吗? – SomeDude

+0

我创建了一个包含多个'td'元素的示例xml我得到了我想要的元素 – SomeDude