2017-07-13 90 views
0

我目前正在自動化的網站,其中的網址不斷變化(SSO喜歡網站)..在這一點上,我們正在查詢字符串中傳遞參數..我想要捕獲網站經歷每個URL到達特定頁面。我怎樣才能做到這一點使用硒的webdriver ..如何使用Selenium獲取網站的每個網址?

我試過定期driver.getCurrentUrl(),但它是不可靠的..

是否有其他變通的呢?

非常感謝!

+0

Mashkurm你是什麼意思,但它是不可靠的?也許你只是以一種不可靠的方式使用'.getCurrentUrl()'。 **:)**是否將'.getCurrentUrl()'語句包裝在'ExplicitWait'中?無論如何,如果你想捕捉大量的URL,那麼Selenium是不可行的。你應該嘗試使用** JSoup **。 – iamdanchiv

回答

0

嘗試運行以下命令:

driver.get("http://www.telegraph.co.uk/"); 
    List<WebElement> links = driver.findElements(By.tagName("a")); 
    List<String> externalUrls = new ArrayList(); 
    List<String> internalUrls = new ArrayList(); 

    System.out.println(links.size()); 

    for (int i = 1; i <= links.size(); i = i + 1) { 
      String url = links.get(i).getAttribute("href"); 
      System.out.println("Name:"+links.get(i).getText()); 
      System.out.println("url"+url); 
      System.out.println("----"); 
      if (url.startsWith("http://www.telegraph.co.uk/")) { 
       if(!internalUrls.contains(url)) 
        internalUrls.add(links.get(i).getAttribute("href")); 
      } else { 
       if(!externalUrls.contains(url)) 
        externalUrls.add(links.get(i).getAttribute("href")); 
      } 
     } 

如果你要收集所有的鏈接爲您的網站,然後我會做這樣的事情:

public class GetAllLinksFromThePage { 

    static List<String> externalUrls = new ArrayList(); 
    static List<String> internalUrls = new ArrayList(); 
    public static void main(String[] args) { 
     MyChromeDriver myChromeDriver = new MyChromeDriver(); 
     WebDriver driver = myChromeDriver.initChromeDriver(); 

     checkForLinks(driver, "http://www.telegraph.co.uk/"); 

     System.out.println("finish"); 

    } 

    public static void checkForLinks(WebDriver driver, String page) { 
     driver.get(page); 
     System.out.println("PAGE->" + page); 
     List<WebElement> links = driver.findElements(By.tagName("a")); 
     for (WebElement we : links) { 
      String url = we.getAttribute("href"); 
      if (url.startsWith("http://www.telegraph.co.uk/")) { //mymainpage 
       if (!internalUrls.contains(url)) { 
        internalUrls.add(we.getAttribute("href")); 
        System.out.println(we.getText() + " has added to internalUrls"); 
        checkForLinks(driver, url); 
       } 

      } else if (!externalUrls.contains(url)) { 
       externalUrls.add(we.getAttribute("href")); 
       System.out.println(we.getText() + " has added to externalUrls"); 
      } 
     } 

    } 
} 

希望這有助於!

相關問題