54

以下是一堆链接,其中<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 它按名称选择

4

4 回答 4

106

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

具有 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

于 2013-09-27T20:04:17.657 回答
6

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

于 2013-09-27T16:09:24.277 回答
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>的标签并退出循环。

于 2014-06-18T12:38:10.590 回答
1

在 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();
}
于 2018-08-07T09:16:13.850 回答