我有一个这样的表格:
<table>
<th>
<td>Area</td><td># of errors</td>
</th>
<tr><td>school</td><td>23</td></tr>
<tr><td>student</td><td>0</td></tr>
<tr><td>school</td><td>17</td></tr>
<tr><td>student</td><td>0</td></tr>
</table>
如何选择“学校”区域的最后一行。
直到最近我使用assert_text与
//table//tr//td[contains(text(),'school')]/following::td
现在需要考虑存在错误的行,但仍需查看具有零错误的“最后”行 - 对于一个区域而言。
对于这种情况,可以使用以下方法:
如果一行中存在错误,则将该行视为当前区域的最后一行。只有当出现值为0的行时,才会停止搜索并返回该行。
//table//tr//td[contains(text(),'school')]/following::td
错误地选择了第一行中存在23个错误的行。
我尝试使用tr[last()]
-
//table//tr[last()]//td[contains(text(),'school')]/following::td[2]
但问题是这选择了最后一行学生表格,我想选的是最后一行学校表格(实际上是所有行中倒数第二行)。
我也尝试过:
//table//td[contains(text(),'school')][last()]/following::td[2]
但这并没有起作用(它仍然选择“第一个”学校行)。
我需要考虑到一个学校行、两个学校行和超过2个学校行,所以我需要表达式足够动态以处理这种情况。
(//tr [td [.='school')]])[last()]/following::tr/td [2]
。 - Ross Patterson