le sélénium xpath - comment sélectionner la dernière ligne d'une table avec un contenu spécifique?

J'ai un tableau comme ceci:

<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>

Comment puis-je sélectionner la dernière ligne pour les "Écoles" de la Zone.

Jusqu'à récemment, j'ai utilisé assert_text avec

//table//tr//td[contains(text(),'school')]/following::td

et un value de 0, c'est à dire zéro des erreurs.

Cependant, maintenant, j'ai besoin de compte pour les lignes qui ont des erreurs, mais qui regarde encore la "dernière" de la ligne pour une région qui a zéro des erreurs.
Pour ce cas, en utilisant

//table//tr//td[contains(text(),'school')]/following::td

incorrecte sélectionne la première ligne qui a le 23 erreurs.

J'ai essayé d'utiliser tr[last()] -

//table//tr[last()]//td[contains(text(),'school')]/following::td[2]

mais le problème est que cela, sélectionnez la dernière ligne du tableau - qui est pour les étudiants. Je veux la dernière ligne du tableau qui est pour les écoles (c'est en fait l'avant-dernière ligne de la table de toutes les lignes).

J'ai aussi essayé:

//table//td[contains(text(),'school')][last()]/following::td[2]

mais cela ne fonctionne pas (il continue à sélectionne que de la première école de ligne).

J'ai besoin d'être en mesure de rendre compte juste pour une école en ligne, deux de l'école lignes et plus de 2 école de lignes donc j'ai besoin de l'expression être suffisamment dynamique pour gérer cela.

OriginalL'auteur Michael Durrant | 2013-04-12