J'essaie de trouver un élément avec Attribute. Eh bien, je peux trouver des éléments avec Id, tagName, Xpath et toutes les autres méthodes prédéfinies dans Selenium. Mais, j'essaie d'écrire une méthode qui renvoie spécifiquement WebElement, à l'aide du nom d'attribut et de la valeur en entrée.
List<WebElement> elements = webDriver.findElements(By.tagName("Attribute Name"));
for(WebElement element : elements){
if(element.getText().equals("Value of Particular Attribute")){
return element;
}
else{
return null;
}
}
En supposant que XPath ne soit pas une option, existe-t-il d'autres moyens plus efficaces de procéder?
Vous pouvez facilement accomplir cette tâche avec CSS.
La formule est la suivante:
element[attribute='attribute-value']
Donc si vous avez,
<a href="mysite.com"></a>
Vous pouvez le trouver en utilisant:
By.cssSelector("a[href='mysite.com']");
cela fonctionne en utilisant n'importe quel attribut possible.
Cette page donne ici de bonnes informations sur la manière de formuler des sélecteurs CSS efficaces et de faire correspondre leurs attributs: http://ddavison.io/css/2014/02/18/effective-css-selectors.html
Je ne comprends pas votre exigence:
En supposant que XPath n'est pas une option ...
S'il ne s'agissait que d'une hypothèse incorrecte, alors XPath est l'option parfaite!
webDriver.findElements(By.xpath("//element[@attribute='value']"))
Bien sûr, vous devez remplacer element
, attribute
et value
par vos noms actuels. Vous pouvez également trouver "n'importe quel élément" en utilisant le caractère générique:
webDriver.findElements(By.xpath("//*[@attribute='value']"))
Utilisez plutôt les sélecteurs CSS:
List<WebElement> elements = webDriver.findElements(By.cssSelector("*[attributeName='value']"));
Edit: sélecteurs CSS au lieu de XPath