Le code HTML est comme suit -
pour localiser le "tableau" présent à l'intérieur "Div ID =" Demo4a "', mon besoin est - P>
Étape 1: Trouvez d'abord le texte "ITC éligible" Étape 2: Localisez ensuite le texte "(A) ITC disponible" en utilisant le fait qu'il apparaît après le texte "ITC éligible" Étape 3: Localisez ensuite le premier "tableau" immédiatement après le texte "(a) ITC disponible" p>
pour localiser le "tableau" présent à l'intérieur "Div ID =" Demo4b "', mon besoin est -
Étape 1: Premier localiser le texte "CTI éligible" Étape 2: Localisez ensuite le texte "(B) ITC à l'envers" Utilisation du fait qu'il apparaît après le texte "ITC éligible", qui est suivi du texte "(A) ITC disponible" Étape 3: Localisez ensuite la première "table" immédiatement après le texte "(B) ITC inversé" p>
Qu'est-ce que j'ai essayé jusqu'à présent à l'aide des "suivants" Axes XPath en Java & selenium- P>
pour localiser le "tableau" présent à l'intérieur "div =" démo4a "' p>
pour l'étape 1: p> Pour l'étape 2: -------- - aucune idée de la façon de le faire !!! --------- p> pour l'étape 3: p> Qu'est-ce que j'ai essayé jusqu'à maintenant en utilisant les axes XPath "suivants" dans Java & Sélénium- p> pour localiser le "tableau" présent à l'intérieur "div =" démo4a "' p> pour l'étape 1: p>
List<WebElement> table4_a_Data =
tableLocator.findElements(
By.xpath("following::table[1]")
);
4 Réponses :
Vous pouvez essayer d'utiliser des locators XPath comme p>
Si vous devez utiliser le texte pour identifier la table, essayez comme p>
// * [@ ID = 'Demo4a'] / Table Code> P>
(// * [texte () = 'admissible itc'] //..//..//..// table) [1] code> p> P>
xpath pour récupérer "(A) ITC disponible" Elément:
//div[.="Eligible ITC"]//div[contains(.,"(A)")]/following-sibling::div[1]/table
Non, il n'est pas nécessaire de "suivre". Mais je dois atteindre la "table" souhaitée uniquement en utilisant les "textes" dans l'ordre de leur occurrence dans le document HTML.
J'essaie également d'éviter l'utilisation de n'importe quel "identifiant" ou "classe" pour localiser les "tables".
Merci pour votre réponse. J'ai ajouté mon commentaire sous la première requête principale. Jetez un coup d'oeil s'il vous plait.
Vous pouvez essayer le code ci-dessous:
WebElement tableA = gstr3bFullPageData.findElement(By.cssSelector("#demo4a table")) WebElement tableB = gstr3bFullPageData.findElement(By.cssSelector("#demo4b table"))
J'essaie d'éviter d'utiliser n'importe quel "ID" pour localiser les tables. Je souhaite utiliser uniquement les "textes" séquentiellement (dans l'ordre de leur emplacement dans le document HTML) pour atteindre la "table" souhaitée.
D'accord. Que d'essayer le premier code sans utiliser d'identifiant et avec la localisation séquentielle
Je pense que les expressions suivantes répondent à vos besoins en pas.
Pour obtenir votre première table, essayez cette expression xpath p> pour obtenir l'autre, essayez p> et , si vous voulez à la fois dans la même expression, essayez: p>
Merci d'avoir répondu. Je cherche une expression qui peut détecter le deuxième texte I.E. "(a) ITC disponible" directement à partir du premier texte I.E. "ITC éligible", sans utiliser de chemin absolus. Par exemple, je peux atteindre le premier texte directement par l'expression "// * [Normalize-Space (Texte ()) =" 4. ITC éligible "]". De là, je veux atteindre le deuxième texte directement, c'est-à-dire sans utiliser de chemin spécifique tel que DIV / A / SPAN, etc.
La raison de l'exigence ci-dessus est que, dans le document HTML d'origine, il existe de nombreux étiquettes DIV et SPAN INBETTONE Le premier et le deuxième texte. Donc, je ne veux pas dépendre de ces tags car je ne suis pas sûr combien d'entre eux sont là. Au lieu de cela, je veux sauter d'un texte à un autre texte en suivant.
@Ripon - Je ne suis pas sûr de vous comprendre tout à fait. J'ai édité les expressions (en modifiant un / code> sur
// code>) pour répondre à ce que je pense être votre problème. Voir si cela fonctionne. Sinon, je crains que vous puissiez modifier votre question pour ajouter plus de code HTML pour afficher le problème.
Merci beaucoup à tous ceux qui ont répondu à ma requête. Après avoir traversé les suggestions données par vous tous et après avoir fait un essai et une erreur, je pourrais proposer la condition exacte que je cherchais. Mon code ressemble maintenant à ceci - '' 'weibelement table3_1data = gstr3bfullpagedata.findelement (by.xpath ("// * / Suivant :: * [Te XT () =' 4. ITC éligible '] / Suivant :: * [ Texte () = '(a) ITC disponible (entier ou en partie)'] ")"); Liste asd = table3_1data.findelements (by.xpath ("./ suivant :: Tableau [1]")); '' '
Ici, je suis d'abord localiser le texte '4. ITC éligible '. Ce texte peut être n'importe où dans le document HTML. Ensuite, sans prendre l'aide de tags, c'est-à-dire que, span, etc., je localisise le texte "(A) ITC disponible (en totalité ou en partie)". Ce texte peut également être présent n'importe où dans le document HTML, sauf que je dois venir après le texte "4. ITC éligible ', pas avant cela. Pour cela, j'utilise les axes XPath "suivants".
De même, je peux utiliser cette chaîne pour parcourir autant de textes que je le souhaite, dans l'ordre de leur emplacement dans le document HTML, sans faire d'utiliser des chemins absolus ou relatifs.