2017-07-08 137 views
-1

我正嘗試從網站中獲取所有鏈接,然後在所有鏈接上單擊一個鏈接。在代碼下運行時,我得到的鏈接總數正確,但我無法在鏈接上導航。它會拋出null pointer exception我正在嘗試從網站獲取所有鏈接,並在所有鏈接上單擊一個鏈接

參考代碼

public class Fetch_all_links { 

static int count =0; 
public static String[] links = null; 

public static void main (String args[]) throws InterruptedException{ 

    System.setProperty("webdriver.chrome.driver", "D:\\New folder\\exe\\chromedriver_win32\\chromedriver.exe"); 

    WebDriver driver = new ChromeDriver(); 
    driver.get("http://www.msn.com"); 
    driver.manage().window().maximize(); 

    List<WebElement>all_links = driver.findElements(By.tagName("a")); 

    System.out.println(all_links.size()); 
    for(int i=0;i<all_links.size();i++){ 


     links[i] = all_links.get(i).getAttribute("href"); 
     driver.navigate().to(links[i]); 
     System.out.println(count + driver.getTitle()); 
     count++; 
     Thread.sleep(1000); 

    } 


} 
+0

你可以發佈錯誤堆棧跟蹤,這將有助於識別問題。請添加這個問題本身。謝謝! – demouser123

+0

是的,我得到了答案,謝謝。 – srinivas

回答

0

這裏是回答你的問題:

你得到一個Null Pointer Exception,因爲你是通過all_links.get(i).getAttribute("href");解析屬性href並將其分配給links哪些是String[]類型。您可以將所有的hrefs存儲在List<String>中。接下來,你可以遍歷列表,並打開各個鏈接如下:

import java.util.ArrayList; 
    import java.util.List; 

    import org.openqa.selenium.By; 
    import org.openqa.selenium.WebDriver; 
    import org.openqa.selenium.WebElement; 
    import org.openqa.selenium.chrome.ChromeDriver; 

    public class Q44985587_links { 

     static int count =0; 
     public static void main (String args[]) throws InterruptedException 
     { 
      System.setProperty("webdriver.chrome.driver", "C:\\Utility\\BrowserDrivers\\chromedriver.exe"); 
      WebDriver driver = new ChromeDriver(); 
      driver.get("http://www.msn.com"); 
      driver.manage().window().maximize(); 
      List<WebElement> all_links = driver.findElements(By.tagName("a")); 
      System.out.println(all_links.size()); 
      List<String> links = new ArrayList<String>(); 
      for(WebElement link:all_links) 
      { 
      String link_href = link.getAttribute("href"); 
      links.add(link_href); 
      } 
      System.out.println(links); 


     } 
    } 

讓我知道如果這個回答你的問題。

+0

是的,這解決了我的問題,謝謝你詳細解釋我的錯誤 – srinivas

+0

如果我的答案滿足你的問題,你可以通過點擊答案旁邊的勾號來接受答案,就在投票上/下箭頭下面,所以刻度線變成綠色?謝謝 – DebanjanB

相關問題