2011-04-21 2 views
0

Je cette XPath:Deux niveaux contient de dans un XPath

//tr[contains(td, 'Europe')] 

qui travaillait quand j'avais ceci:

<tr> 
    <td></td> 
    <td>Europe</td> 
    <td></td> 
</tr> 

mais maintenant j'ai ceci:

<tr> 
    <td></td> 
    <td><a>Europe</a></td> 
    <td></td> 
</tr> 

Comment puis-je obtenir un XPath maintenant (basé sur le fait que l'Europe est là).

J'ai essayé:

//tr[contains(a, "Europe")] 

et

//tr[contains(text(), "Europe")] 

et bien d'autres choses stupides sans succès.

Répondre

4
//tr[contains(td, 'Europe')] 

Ceci devrait fonctionner avec les deux schémas car fn:contains() transpose les deux arguments en chaînes.

Je vois un problème avec un schéma différent où il peut y avoir plus d'un élément td. Pour ce cas, vous devez utiliser:

//tr[td[contains(.,'Europe')]] 
+0

Oui, il y a plus de tds là-bas, je vais corriger la question, merci pour la réponse. – Pablo

+0

Vous pouvez vouloir .//tr[td[contains(.,Europe ')]] s'il y a une chance que cela puisse aussi correspondre en dehors du nœud de contexte. –

Questions connexes