How to click a link whose href has a certain substring in Selenium?

java, selenium

Solution

I need to click the link whose href has substring "long" in it. How can I do this?

With the beauty of CSS selectors.

your statement would be...

driver.findElement(By.cssSelector("a[href*='long']")).click();

This means, in english,

Find me any 'a' elements, that have the `href` attribute, and that attribute `contains` 'long'

You can find a useful article about formulating your own selectors for automation effectively, as well as a list of all the other equality operators. `contains`, `starts with`, etc... You can find that at: http://ddavison.io/css/2014/02/18/effective-css-selectors.html

Problem

The following is a bunch of links `<a elements.` ONLY one of them has a substring "long" as a value for the attribute 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> ................... ``` I need to click the link whose `href` has substring "long" in it. How can I do this? PS: `driver.findElement(By.partialLinkText("long")).click();` // b/c it chooses by the name

Original source