selenium xpath,如何选择表中的最后一个匹配元素?

时间:2013-04-03 13:28:00

标签: selenium

鉴于

<table>
  <tr>
    <td>service1</td>
  </tr>
  <tr>
    <td>service2</td>
  </tr>
  <tr>
    <td>service3</td>
  </tr>
  <tr>
    <td>blip</td>
  </tr>
</table>

当我不知道n会是什么时,如何选择最后一个'service-n'行? 我尝试添加[last()]但它没有用。

我有:

//table//tr//td[contains(text(),'service')]

但是它选择了第一行,我想要最后一行 我不能使用tr[3],因为实际上'service-n'行的数量是动态的并且变化很大。

4 个答案:

答案 0 :(得分:16)

答案正是我放[last()]的地方,我把它放在了错误的地方

它在这里:

//div[@id='content']//table//tr[last()]//td[contains(text(),'service')][last()]/following-sibling::td[2]

不在这里:

//div[@id='content']//table//tr[last()]//td[contains(text(),'service')]/following-sibling::td[2][last()]

答案 1 :(得分:1)

以这种方式尝试使用cssSelector。

By.cssSelector("table tr:last-child td")

答案 2 :(得分:1)

cousin

答案 3 :(得分:0)

<table id="table1">
 <tbody>
  <tr id="tr1">
   <td id="td1"></td>
   <td id="td2"></td>
  <tr>
  <tr id="tr2">
   <td id="td3"></td>
   <td id="td4"></td>
  <tr>
 <tbody>
</table>

然后定位到上一个tr的最后一个td 我们可以将xpath设置为:xpath =“ // table [@ id ='table1'] // tr [last()] // td [last()]”;