Comment faire pour obtenir plusieurs éléments (div) à l'aide de Xpath Selenium WebDriver JAVA?
Je vais avoir quelques difficultés à obtenir plusieurs éléments à partir d'un div.
Comme vous pouvez le voir, j'ai eu la div[1] et une fois que je veux obtenir plus de 8 div à l'intérieur de la div[1]. Mais je veux le faire avec xpath(même ligne). Quelqu'un a une idée?
Père = .//*[@id='result']/div[1]
Fils =
.//*[@id='result']/div[1]/div[6]
.//*[@id='result']/div[1]/div[9]
.//*[@id='result']/div[1]/div[12]
.//*[@id='result']/div[1]/div[15]
.//*[@id='result']/div[1]/div[18]
.//*[@id='result']/div[1]/div[21]
.//*[@id='result']/div[1]/div[24]
.//*[@id='result']/div[1]/div[27]
Mon Code:
List<String> productName = new ArrayList<String>();
List<WebElement> allProductsName = driver.findElements(
By.xpath(".//*[@id='result']/div[1]/div[6]"));
for(WebElement w : allProductsName) {
productName.add(w.getText());
}
System.out.print(productName);
J'ai imaginé quelque chose comme ça ".//*[@id='result']/div[1]/div[6],[9]..."
ou
".//*[@id='result']/div[1]/div[6 and 9 ....]"
Mais n'a pas fonctionné.
Vous devez vous connecter pour publier un commentaire.
que la description du produit est livré dans 6,9,12,15,18 utiliser ce code qui permettra de parcourir de 6 à 27 dans la multiplication de 3.
Il suffit de retirer le numéro d'index à la fin de la xpath et obtenir tous les enfants immédiats divs dans une Liste.
La première chose que je vois, c'est que le développement de l'application ne devrait pas avoir de doublons ID statique. Si utilisé comme cela, devrait être une classe à la place.
Deuxième chose, c'est l'expression xpath n'est pas la bonne approche. Essayez de ne jamais utiliser //* , et vous n'avez pas besoin de le point (.//), comme il peut prendre beaucoup plus de temps pour trouver le ou les élément(s), et de faire des tests plus lent.
Vous ne vous montrez pas tout code html, mais en fonction de votre échantillon, vous devriez être en mesure d'obtenir tout élément div à l'aide de
ou si vous insistez sur xpath