Java sélénium xpath - obtenir tous les éléments en vertu d'un élément spécifique

c'est simplifiée de la structure HTML, je suis à la recherche par le biais de:

<div class="main">
...other stuff...
       <td class="child">44</td>
       <td class="child">59</td>
       <td class="child">11</td>
</div>
<div class="main">
...other stuff...
       <td class="child">5</td>
       <td class="child">14</td>
       <td class="child">98</td>
</div>
...this kind of structure repeats with similar numbers a few more times but with identical class names

J'ai besoin d'extraire tous les chiffres sous le premier trouvé principal de la classe j'ai donc fait une requête à la recherche de la première main, et tous les td avec la classe spécifique sous elle. Quelqu'un peut-il me donner un indice de ce que je fais mal depuis cette requête me donne tous les numéros de tous les td avec la classe "enfant" dans tous les "principaux" div à l':

List<WebElement> koefi = driver.findElements(By.xpath("//div[@class='main'][1]//td[@class='child']"));

Ce que je fais mal ou est ma logique à droite mais je suis pas certains d'autres parties de html, je n'ai pas collé ici, car la structure est trop lourd..?

Merci!!!!!

p.s.:
J'ai essayé aussi mais encore une fois, j'obtiens le contenu de tous les td avec "enfant" de la classe, et pas seulement la première "main"..

List<WebElement> koefi = driver.findElements(By.xpath("//*[1][@class='main']//td[@class='child']"));

Mise à JOUR:
J'ai réussi à résoudre mon problème en commençant par l'obtention de la première occurence de la "main" div " qui est par défaut constaté par le .findElement fonction:

WebElement element = driver.findElement(By.xpath("//*[1][@id='main']"));

Et puis l'extraire avec .findElements fonction de "l'enfant" des classes:

List<WebElement> kk = element.findElements(By.className("child"));

Je suis toujours incapable de comprendre pourquoi ne pas l' .findElements avec mon xpath de travail, ou il fonctionne trop bien, c'extraits de chaque classe "main" et pas seulement le premier. Et le HTML d'origine est trop gros pour le coller ici, donc je ne voulez pas vous embêter à vous les gars!!

  • Avez-vous d'obtenir l'erreur? pouvez-vous s'il vous plaît essayer : java.util.Liste<WebElement> koefi = pilote.findElements(Par.xpath("//div[@class='principal'][1]//td[@class='enfant']"));
  • Êtes-vous sûr que tous les <div class="main"> sont des frères et sœurs?
  • J'obtiens la liste de tous les "enfants" des éléments, et mon objectif est d'obtenir un "enfant" éléments uniquement dans le cadre du premier "principal".. je importés de java.util.Liste en haut de mon fichier..
  • il y a une structure sous-jacente au-dessus de la "main" conteneur, mais, oui, ils sont tous au même niveau, par exemple div1>div2>div3>main, puis de nouveau div1>div2>div3>principale et ainsi de suite..
  • A-t-elle class="main" ainsi?
  • non, "principal" est en fait un nom de classe spécifique pour l'ensemble des classes, et il n'existe pas un niveau plus élevé div avec le même nom de classe
  • essayez de renommer "principale", puis utilisez mise à jour de xpath.
  • comment voulez-vous dire, de le renommer à quoi?
  • le "principal", ce ne sont pas les frères et sœurs.. ils sont de même niveau dans la hiérarchie
  • Je veux dire comme nom de classe "principale-1"
  • le résultat de la Liste est vide
  • Je ne pense pas que ce soit fructueuse. Merci de poster plus de la réelle HTML afin de nous aider à obtenir l'image complète.
  • Qu'est-ce que l'élément parent de cette série de <div class="main"> ? L'élément qui se compose de tous ces éléments div avec la classe "principale".
  • Essayez comme je l'ai décrit, par le biais de la sélection broweser, puis supprimer les détails si nécessaire. stackoverflow.com/questions/23951062/... U pourrait également utiliser SeleniumIDE simplement pour vérifier votre sélection, je trouve juste de l'aide de la recherche de l'élément et de vérifier dans le navigateur de script plus rapide.
  • J'ai réussi à obtenir ce que je voulais, merci de voir le post original de mise à JOUR pour voir
  • J'ai réussi à obtenir ce que je voulais, merci de voir le post original de mise à JOUR pour voir
  • Le xpath dans la question d'origine //div[@class='main'][1]//td[@class='child'] contient un chemin d'accès relatif qui est vrai pour tous vos principales classes.
  • And the original HTML is too big to paste here. Vous n'avez pas besoin de coller tout le code html. S'il vous plaît juste coller l'élément parent de tous ces balise div avec la classe principale. Après cela, il sera plus facile de trouver une meilleure des solutions.
  • oui, c'est pourquoi j'ai essayé //*[1][@class='principal']//td[@class='enfant'] qui je tought me donnerait la première occurence de la div principale sur la page, à droite??
  • c'est ok, j'ai réussi à obtenir ce que je voulais, donc pas besoin de coller tout le contenu ici..
  • Je ne suis pas au courant de cette syntaxe .. Permettez-moi de faire quelques recherches et de se remettre

InformationsquelleAutor Hrvoje85 | 2014-12-23