如何在selenium webdriver中从网页中提取所有链接后单击特定链接

时间:2015-10-21 22:08:18

标签: java selenium

我是自动化世界的新手,并致力于自动化BBC网站。我有链接的数量以及该链接中的文本。 。我想点击带有文字"辅助功能帮助"的特定链接。请告诉我该怎么做。以下是我的代码:

  import java.util.List;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;


public class BBC_AllLinks {

    public static void main(String[] args) throws InterruptedException {
        // TODO Auto-generated method stub

        WebDriver driver = new FirefoxDriver();
        driver.get("http://www.bbc.com");
        List<WebElement> allLinks = driver.findElements(By.tagName("a"));
        //Total number of links in the webpage
        System.out.println("Total Links--> "+allLinks.size());
        //35th index
        Thread.sleep(4000);
    for (int i =0; i<=allLinks.size();i++)
        System.out.println(allLinks.get(i).getText()+"----"+allLinks.get(i).isDisplayed());
    }

}

2 个答案:

答案 0 :(得分:0)

您可以使用Xpath直接点击具有特定文本内容的链接,如下所示(未经测试的代码):

driver.findElement(By.xpath("//a[contains(text(), \"Accessibility Help\")]")).click();

请注意,如果此文本有多个链接,它将尝试单击第一个满足文档顺序的条件。通常,如果可能的话,最好使用id或唯一的CSS选择器来标识元素。

您还可以循环遍历您手动拥有的网络元素列表,并检查内部文本(通过getText()之类的内容)并单击您自己。

答案 1 :(得分:0)

我对你的代码应该做的事感到困惑。您是否尝试记录页面上的所有链接,然后然后点击链接?或者您只是想点击链接?

如果您要做的只是点击那一个链接,那么这就是您所需要的。

driver.findElement(By.linkText("Accessibility Help")).click();