2017-07-08 142 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

相关问题