簡體   English   中英

使用帶有Java的Selenium WebDriver從頁面源獲取所有href鏈接

[英]Fetching all href links from the page source using Selenium WebDriver with Java

我正在嘗試使用WebDriver從頁面獲取所有鏈接,然后使用http.connect獲取響應狀態,以測試頁面上所有href鏈接的HTTP響應。

代碼段以獲取錨標記的鏈接:

List<WebElement> list = driver.findElements(By.cssSelector("a"));
for (WebElement link : list) {
    System.out.println(link.getText());
}

但是我的頁面上還有更多的href鏈接,這些鏈接沒有錨標記<a>並且可能位於標題部分左右的頁面主體之外。 一些示例如下所示。 上面的webdriver代碼無法解決獲取所有類型的鏈接。 在某些情況下還需要提取src鏈接...

<script src="https://www.test.com/js/50/f59ae5bd.js"></script> 
<link rel="stylesheet" href="www.test.com/css/27/5a92c391c7be2e9.css" rel="stylesheet" type="text/css" />
<link sizes="72x72" href="https://www.test.com/css/27/5a92c391c7b/kj32.png" />
<li><a href="https://www.test.com/webapps/mpp/resortcheck">resortcheck</a>

如果有人可以指導如何解決或解決了從頁面獲取所有href鏈接的類似問題,我將不勝感激。

您可以使用Xpath來獲取包含屬性href / src的所有元素。

List<WebElement> list=driver.findElements(By.xpath("//*[@href or @src]"));

我嘗試了類似的方法來獲取所有其他資源文件的鏈接。 工作正常。

       WebDriver driver = new FirefoxDriver();
       driver.get("http://www.google.com");

       List<WebElement> list=driver.findElements(By.xpath("//*[@href or @src]"));

       for(WebElement e : list){
           String link = e.getAttribute("href");
           if(null==link)
               link=e.getAttribute("src");
           System.out.println(e.getTagName() + "=" + link);
       }

鏈接存在於體外是什么意思?

所有鏈接都可以通過html標簽識別。 還有什么其他方式表示鏈接?

檢查我的以下代碼可能有幫助:

public static void main(String[] args)
{
    WebDriver driver = new FirefoxDriver();
    driver.get("http://www.google.com/");
    List<WebElement> links=driver.findElements(By.tagName("a"));
    for(WebElement ele:links)
        System.out.println(ele.getAttribute("href"));
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM