如何使用水豚 "find" 按标题索引获取数据元素?

how to get data element by title index with capybara "find"?

我有 html 页:

<html>
  <body>
    <th>a</th>
    <th>b</th>
    <th>c</th>
    <th>d</th>
    <th>e</th>
    <th>f</th>
    <th>g</th>
    <th>h</th>
    <th>i</th>
    <td>1</td>
    <td>2</td>
    <td>3</td>
    <td>4</td>
    <td>5</td>
    <td>6</td>
    <td>7</td>
    <td>8</td>
    <td>9</td>
  </body>
</html>

我需要通过选择标题(th 标签)来获取数据(td 标签)。 我正在尝试:

page.find(:xpath, "//body/td[count(//body/th[contains(.,'a')]/preceding-sibling::th)-1]")

我希望得到“1”作为返回值,但它 returns“8”。 在我看来,"count" 不正确。那么,我做错了什么?

逻辑应该计算前面的兄弟 th 加 1,找到 th 的正确位置索引:

//body/td[count(//body/th[contains(.,'a')]/preceding-sibling::th)+1]

xpathtester demo

输出:

<td>1</td>