Xpath 的 //tr/td/a[text()="France"] 显示 3 个匹配项。如何获取 "x" 结果的值?

Xpath's //tr/td/a[text()="France"] shows 3 matches. How to get value of "x" result?

例如有这样一段代码:

<tr>
    <td width="270" class="news">
        <a href="/lists/test_acc/1/" class="all">Ukraine</a>
        <span>17.06.15<span>
    </td>
</tr>

<tr>
    <td width="270" class="news">
        <a href="/lists/test_acc/1/" class="all">France</a>
        <span>17.06.15<span>
    </td>
</tr>

<tr>
    <td width="270" class="news">
        <a href="/lists/test_acc/1/" class="all">USA</a>
        <span>17.06.15<span>
    </td>
</tr>

<tr>
    <td width="270" class="news">
        <a href="/lists/test_acc/1/" class="all">France</a>
        <span>10.10.15<span>
    </td>
</tr>

<tr>
    <td width="270" class="news">
        <a href="/lists/test_acc/1/" class="all">Germany</a>
        <span>17.06.15<span>
    </td>
</tr>

<tr>
    <td width="270" class="news">
        <a href="/lists/test_acc/1/" class="all">France</a>
        <span>23.12.15<span>
    </td>
</tr>

在 Chrome 的开发面板中,这个 xpath //tr/td/a[text()="France"] 显示了 3 个结果。 我找不到获取所需值的方法。

例如,如何获取第二个结果的日期(10.10.15)? 我用 position//tr/td/a[text()="France"][position=2]/span/text()//tr/td/a[position(text()="France")][2]/span/text() 等尝试了不同的方法,但没有成功。也许 "position" 不是我需要的?

已编辑: "France" 在代码中的位置因页面而异。在上面的示例中,现在位置是 2、4、6,但在另一页上它可以是 3、10、15、25、27。如何在不考虑 'France' 实际所在位置的情况下得到第二个结果和最后一个结果?

您的 'xml' 无效,所以我首先更正了它(我知道它无效 HTML 但足以测试):

<?xml version="1.0" encoding="utf-8"?>
<form>
 <tr>
   <td width="270" class="news">
     <a href="/lists/test_acc/1/" class="all">France</a>
     <span>17.06.15</span>
   </td>
 </tr>
 <tr>
   <td width="270" class="news">
     <a href="/lists/test_acc/1/" class="all">France</a>
     <span>10.10.15</span>
   </td>
 </tr>
 <tr>
   <td width="270" class="news">
     <a href="/lists/test_acc/1/" class="all">France</a>
     <span>23.12.15</span>
   </td>
 </tr>
</form>

然后,这成功了:

//tr[position()=2]/td/a[text()="France"]/../span/text()

这是一种可能的方式:

(//tr/td[a='France'])[2]/span/text()

位置索引前的括号是必需的,因为 ([]) 比 (///) * 具有更高的优先级(优先级)。因此,例如,此表达式 //tr/td[a='France'][2]/span/text() 将在单个 tr 父级中查找第二个 td,而您发布的 HTML 示例中不存在该表达式。

*:关于此事的进一步解释:How to select specified node within Xpath node sets by index with Selenium?