Comment cliquer sur un lien dont href a une certaine sous-chaîne dans Selenium?

Ce qui suit est un tas de liens <a elements. SEULEMENT l’un d’eux a une sous-chaîne “long” comme valeur pour l’atsortingbut href

  name1   name2  // The one that I need  name3   name4  ................... 

Je dois cliquer sur le lien dont href a la sous-chaîne “long”. Comment puis-je faire ceci?

PS: driver.findElement(By.partialLinkText("long")).click(); // b / c choisit par le nom

Je dois cliquer sur le lien qui a href a sous-chaîne “long” dedans. 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’, qui ont l’atsortingbut href , et cet atsortingbut contains ‘long’

Vous pouvez trouver un article utile sur la formulation efficace de vos propres sélecteurs d’automatisation, ainsi qu’une liste de tous les autres opérateurs d’égalité. contains , starts with , etc … Vous pouvez le trouver sur: http://ddavison.io/css/2014/02/18/effective-css-selectors.html

utilisez driver.findElement(By.partialLinkText("long")).click();

Tu peux le faire:

 //first get all the  elements List linkList=driver.findElements(By.tagName("a")); //now traverse over the list and check for(int i=0 ; i 

En premier lieu, nous trouvons toutes les balises et les list.After dans une liste. list.After cela, nous list.After la liste une par une pour trouver la balise dont l'atsortingbut href contient une longue chaîne. Et puis nous cliquons sur cette balise particulière et sort de la boucle.

Avec l’aide de xpath locator également, vous pouvez obtenir la même chose.

Votre déclaration serait:

 driver.findElement(By.xpath(".//a[contains(@href,'long')]")).click(); 

Et pour cliquer sur tous les liens contient longtemps dans l’URL, vous pouvez utiliser: –

 List linksList = driver.findElements(By.xpath(".//a[contains(@href,'long')]")); for (WebElement webElement : linksList){ webElement.click(); }