web-dev-qa-db-fra.com

XPath :: Suivez les frères et sœurs

J'ai la structure HTML suivante: J'essaie de créer une méthode robuste pour extraire un deuxième élément digest de couleur, car il y aura beaucoup de balises dans le DOM.

<table>
  <tbody>
    <tr bgcolor="#AAAAAA">
    <tr>
    <tr>
    <tr>
    <tr>
      <td>Color Digest </td>
      <td>AgArAQICGQMVBBwTIRQHIwg0GUMURAZTBWQJcwV0AoEDAQ </td>
    </tr>
    <tr>
      <td>Color Digest </td>
      <td>2,43,2,25,21,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, </td>
    </tr>
  </tbody>
</table>

J'essaie d'extraire le deuxième élément td "Color Digest" qui a la valeur décodée.

J'ai écrit le xpath suivant mais au lieu d'obtenir le second, je ne reçois pas le second élément td.

//td[text() = ' Color Digest ']/following-sibling::td[2]

Et quand je le change en td [2] en td [1], je récupère les deux éléments.

64
add-semi-colons

Vous devriez rechercher le deuxième tr qui a le td égal à 'Color Digest', puis vous devez regarder le frère suivant du premier td du tr, ou le deuxième td.

Essayez ce qui suit:

//tr[td='Color Digest'][2]/td/following-sibling::td[1]

ou

//tr[td='Color Digest'][2]/td[2]

http://www.xpathtester.com/saved/76bb0bca-1896-43b7-8312-54f924a98a89

93
james31rock

Vous pouvez aller pour identifier une liste d'éléments avec xPath:

//td[text() = ' Color Digest ']/following-sibling::td[1]

Cela vous donnera une liste de deux éléments, que vous pouvez utiliser le 2ème élément comme prévu. Par exemple:

List<WebElement> elements = driver.findElements(By.xpath("//td[text() = ' Color Digest ']/following-sibling::td[1]"))

Maintenant, vous pouvez utiliser le 2ème élément comme élément prévu, à savoir elements.get (1)

4
Dhaval Jethava

/html/body/table/tbody/tr[9]/td[1]

Dans Chrome (Safari possible également)), vous pouvez inspecter un élément, puis cliquez avec le bouton droit de la souris sur la balise pour laquelle vous voulez obtenir le xpath, puis copiez le xpath pour sélectionner cet élément.

0
guanome