2011-01-18 3 views
1

Par exemple:Comment localiser un élément parent qui contient un autre élément

J'ai la structure suivante:

<td> 
    <a> 
    <input id="MyID1"> 
</td> 

<td> 
    <a> 
    <input id="MyID2"> 
</td> 

<td> 
</td> 

Nous suggérons que <a> ne possède pas d'attributs spécifiques pour le localiser par eux.

donc 2 questions:

  1. je dois trouver <a> deuxième td. Je sais que <a> Im cherchant est placé au même td avec l'entrée "MyID2". Comment puis je faire ça?

  2. J'ai besoin de localiser 3ème td (vide). Je sais que td Im cherchant est le td suivant pour td ce qui contiennent l'entrée "MyID2". Comment puis je faire ça?

Merci!

Répondre

0

Si vous pouvez utiliser XPath quelque part, l'expression suivante trouvera l'élément <a> dans la deuxième <td>:

//td/a[../input/@id='MyID2']

Il trouvera tous les éléments <a>, qui sont les enfants directs d'un élément <td> ayant une <input> sur le même niveau avec un attribut id égal à 'MyID2'.

+0

Cela fait un moment, mais je ne crois pas que XPath fonctionne sur du texte structuré non bien formé. Voici une référence à une question similaire: http://stackoverflow.com/questions/354322/finding-a-node-or-close-to-it-using-xpath-in-non-well-formed-html – Riggy

+1

Tous les navigateurs Transformer le code HTML non-formé en un modèle DOM "navigable" et bien formé. Par exemple. Les bibliothèques XPath JavaScript utilisent ce modèle pour autoriser les requêtes XPath pour la recherche et l'accès aux éléments HTML. Je ne connais pas très bien Selenium, mais je suppose que Selenium fonctionne de la même façon. D'où mon "si vous pouvez utiliser XPath" introduction. – jarnbjo

Questions connexes