以下是一组链接<a elements.
只有一个 他们有一个子字符串&#34; long&#34;作为属性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>
...................
我需要点击href
有子字符串&#34; long&#34;在里面。我怎么能这样做?
PS:driver.findElement(By.partialLinkText("long")).click();
// b / c它选择名称
答案 0 :(得分:95)
我需要点击href中有子串“long”的链接。我怎么能这样做?
具有CSS选择器的美感。
你的陈述是......
driver.findElement(By.cssSelector("a[href*='long']")).click();
这意味着,用英语,
找到任何'a'元素,其中包含
href
属性,以及该属性contains
'long'
您可以找到有用的文章,有效地为自动化制定自己的选择器,以及所有其他相等运算符的列表。 contains
,starts with
等...您可以在http://ddavison.io/css/2014/02/18/effective-css-selectors.html
答案 1 :(得分:5)
使用driver.findElement(By.partialLinkText("long")).click();
答案 2 :(得分:4)
你可以这样做:
//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;
}
}
在此我们要做的是首先我们找到所有<a>
标记并将它们存储在list.After
中,我们逐个迭代列表以查找其<a>
标记href属性包含长字符串。然后我们点击该特定<a>
标签,然后退出循环。
答案 3 :(得分:0)
还可以借助xpath locator来实现相同的目标。
您的声明将是:
driver.findElement(By.xpath(".//a[contains(@href,'long')]")).click();
要单击所有URL中包含长链接的链接,可以使用:-
List<WebElement> linksList = driver.findElements(By.xpath(".//a[contains(@href,'long')]"));
for (WebElement webElement : linksList){
webElement.click();
}