如何使用Selenium通过索引selectXpath节点集中的指定节点?

我正在写一个Seleniumtesting用例。 这里是我用来匹配数据表中所有“修改”button的xpathexpression式。

//img[@title='Modify'] 

我的问题是,如何通过索引访问匹配的节点集? 我试过了

 //img[@title='Modify'][i] 

 //img[@title='Modify' and position() = i] 

但都没有工作..我也尝试过XPath检查器(一个Firefox扩展)。 总共find13个匹配,然后我完全不知道如何select其中一个。 或者XPath支持指定不在同一父节点下的节点的select?

这是一个常见问题

 //someName[3] 

意味着 :文档中的所有someName元素,即它们父代的第三个someName子元素 – 可能有许多这样的元素。

你想要的就是第三个someName元素

 (//someName)[3] 

说明[]具有比//更高的优先级(优先级)。 当你需要指定他们所select的节点列表的第N个节点时,总是要把types为//someName放在括号中。

XPath中没有i

您可以使用文字数字: //img[@title='Modify'][1]

或者你dynamic地构buildexpression式string: '//img[@title='Modify']['+i+']' (但是请记住dynamicXPathexpression式不能 XSLT中使用)。

或者XPath支持指定不在同一父节点下的节点的select?

是: (//img[@title='Modify'])[13]


这个//img[@title='Modify'][i]意思是“任何<img>标题为'Modify'和一个名为<i>的子元素。

 //img[@title='Modify'][i] 

是简短的

 /descendant-or-self::node()/img[@title='Modify'][i] 

因此返回同一父节点下的第i个节点。

你要

 /descendant-or-self::img[@title='Modify'][i] 

(// * [@ attribute ='value'])[index]find元素的目标,同时find其中的多个匹配