Ce qui suit est un tas de liens <a elements.
UNIQUEMENT un} d'entre eux a une sous-chaîne "long" comme valeur pour l'attribut href
<a class="c1" href= "very_lpng string" > name1 </a>
<a class="g2" href= "verylong string" > name2 </a> // The one that I need
<a class="g4" href= "very ling string" > name3 </a>
<a class="g5g" href= "very ng string" > name4 </a>
...................
J'ai besoin de cliquer sur le lien dont la variable href
contient une chaîne "longue". Comment puis-je faire ceci?
PS: driver.findElement(By.partialLinkText("long")).click();
// b/c il choisit par le nom
Je dois cliquer sur le lien qui a href a une sous-chaîne "long". Comment puis-je faire ceci?
Avec la beauté des sélecteurs CSS.
votre déclaration serait ...
driver.findElement(By.cssSelector("a[href*='long']")).click();
Cela signifie, en anglais,
Trouvez-moi des éléments 'a' ayant l'attribut
href
et cet attributcontains
'long'
Vous pouvez trouver un article utile sur la formulation efficace de vos propres sélecteurs, ainsi qu'une liste de tous les autres opérateurs d'égalité. contains
, starts with
, etc ... Vous pouvez le trouver à: http://ddavison.io/css/2014/02/18/effective-css-selectors.html
utiliser driver.findElement(By.partialLinkText("long")).click();
Tu peux le faire:
//first get all the <a> elements
List<WebElement> linkList=driver.findElements(By.tagName("a"));
//now traverse over the list and check
for(int i=0 ; i<linkList.size() ; i++)
{
if(linkList.get(i).getAttribute("href").contains("long"))
{
linkList.get(i).click();
break;
}
}
dans ce que nous faisons, c’est d’abord que nous trouvons toutes les balises <a>
et que nous les stockons dans un list.After
que nous itérons la liste une par une pour trouver la balise <a>
dont l’attribut href contient une longue chaîne. Et puis nous cliquons sur cette balise <a>
et sortons de la boucle.
Avec l'aide de xpath locator, vous pouvez également atteindre le même objectif.
Votre déclaration serait:
driver.findElement(By.xpath(".//a[contains(@href,'long')]")).click();
Et pour cliquer sur tous les liens contenus longtemps dans l'URL, vous pouvez utiliser: -
List<WebElement> linksList = driver.findElements(By.xpath(".//a[contains(@href,'long')]"));
for (WebElement webElement : linksList){
webElement.click();
}