xpath多个条件

xpath多个条件,xpath,selenium,Xpath,Selenium,在硒化物中, 我需要找到文本为“XXX”的第三个链接 <tr> <td>clickAndWait</td> <td>//a[text()='XXX'][3]</td> <td></td> </tr> 单击并等待 //a[text()='XXX'][3] 错误:找不到元素,有什么想法吗?使用: (//a[text()='XXX'])[3] 表达方式: //a[text()='XXX']

在硒化物中, 我需要找到文本为“XXX”的第三个链接

<tr>
  <td>clickAndWait</td>
  <td>//a[text()='XXX'][3]</td>
  <td></td>
</tr>

单击并等待
//a[text()='XXX'][3]
错误:找不到元素,有什么想法吗?

使用:

(//a[text()='XXX'])[3]

表达方式:

//a[text()='XXX'][3]

选择每个
元素,该元素具有值为
'XXX'
的文本子元素,并且是其父元素的第三个子元素。显然,没有这样的节点,您不希望这样,但是您希望从所有这样的
a
元素中获得第三个节点


这正是上面第一个XPath表达式所选择的

,正如我在


这可能是因为XPath中的一个微妙之处,
//a[1]
将选择作为其父代的第一个para子代的所有子代a元素,而不是整个文档中的第一个a元素。使用类似于
//body/genderant::a[1]
或将其锚定到具有类似于
id('myLinks')/genderant::a[1]
的id的元素可能会更好。请注意,对于最后一个示例,您需要使用xpath=

处理定位器。我需要首先按文本进行筛选,而不是id,locator=text('myLinks')/genderant::a[1]是无效的xpath,我需要找到文本为myLinks的第n个链接。链接可以在文档中的任何位置。我没有建议使用
locator=text('myLinks')/genderant::a[1]
,这确实是一个无效的XPath。我的
//body/genderant::a[1]
建议不起作用吗?