如何通过标题索引获取数据元素与capybara"找到"?

时间:2016-06-08 11:24:17

标签: html ruby xpath capybara

我有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>
&#13;
&#13;
&#13;

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

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

我希望得到&#34; 1&#34;作为返回值,但它返回&#34; 8&#34;。 在我看来,&#34; count&#34;不能正常工作。那么,我做错了什么?

1 个答案:

答案 0 :(得分:1)

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

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

<强> xpathtester demo

输出

<td>1</td>