如何使用selenium从网页获取链接

时间:2014-09-26 13:01:06

标签: javascript jquery html selenium selenium-webdriver

我们有什么方法可以获得webelement的链接位置。我知道我们可以从webelement获取文本,并且通过使用getAttribute(“href”)方法我们可以为href链接定位链接。但我的要求是获得所有链接。例如,

1.< a href="http://www.java2s.com/">Example</a> 
2. < a onclick="Test.TestFunction("9","testNumber","2");" style="cursor:pointer">This is text display on page</a>. 

我有以下给定代码的用户:

public void getAlllink(){
    tcount = driver.findElements(By.tagName("a"));
    System.out.println("Total Links on page :"+tcount.size());
    for(WebElement we:tcount){
    System.out.println("Link: "+str);//display element but not link.
    we.click(); //This click on link 
    System.out.println(we.getText()); //display text code that fetched by selenium and not link text
    System.out.println(we.getAttribute("href"));//display only one link http://www.java2s.com/
}

有没有办法获得这两个元素的链接位置。一个是简单链接,另一个是在JavaScript函数调用时生成的链接。

2 个答案:

答案 0 :(得分:0)

public class Java2sAllLinksCapture {

public static void main(String[] args) {
    WebDriver driver = new FirefoxDriver();
    driver.get("http://www.java2s.com/");
    List<WebElement> links = driver.findElements(By.tagName("a"));
    System.out.println(links.size());
    for(int i=0;i<links.size();i++){
        //print the link text
        System.out.println(links.get(i).getText());
        //Print the href's
        System.out.println(links.get(i).getAttribute("href"));
    }
    }
    }

答案 1 :(得分:0)

您需要单击该链接以执行javascript函数,该函数将返回将用作目标的链接。单击该链接将转到目标页面,这会使以前的webElements不可用,因此无法检索该链接。没有点击链接,javascript函数将不会执行并生成链接。