繁体   English   中英

如何单击在href中href具有特定子字符串的链接?

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

以下是一连串<a elements. 其中只有一个 具有子字符串“ long”作为属性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包含子字符串“ long”的链接。 我怎样才能做到这一点?

PS: driver.findElement(By.partialLinkText("long")).click(); //根据名称选择的b / c

我需要单击href包含子字符串“ long”的链接。 我怎样才能做到这一点?

具有CSS选择器的美丽。

您的陈述将是...

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

这是英文的意思

找我任何具有href属性的'a'元素,并且该属性contains 'long'

您可以找到有关如何有效地制定自己的选择器以实现自动化的有用文章,以及所有其他相等运算符的列表。 containsstarts with等,您可以在以下位置找到它: http : //ddavison.io/css/2014/02/18/effective-css-selectors.html

使用driver.findElement(By.partialLinkText("long")).click();

你可以这样做:

//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 ,然后我们list.After迭代列表以找到其href属性包含长字符串的<a>标记。 然后,我们单击该特定的<a>标记并退出循环。

借助xpath定位器,您也可以实现相同的目的。

您的陈述将是:

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();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM