2013-06-21 89 views
1

我的類使用Selenium WebDriver並引發錯誤。當通過Chrome中的Selenium webDriver運行測試用例時發生java.lang.NullPointerException異常

public class Test_Chromedriver { 
    public static WebDriver driver; 
    public static void main(String[] args) { 
     try { 
System.setProperty("webdriver.chrome.driver","E:\\jars\\chromedriver.exe"); 
      WebDriver driver=new ChromeDriver(); 
      driver.get("http://www.facebook.com"); 
      driver.findElement(By.id("email")).sendKeys("surya"); 
      driver.findElement(By.name("pass")).sendKeys("hello"); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     finally{ 
      driver.close(); 
      driver.quit(); 
     } 
    } 
} 

一次我跑低於錯誤消息上面的代碼是越來越:

Started ChromeDriver 
port=12877 
version=23.0.1240.0 
log=D:\Eclipse Juno Workspace\AS Selenium workspace\WebDriver Applications\chromedriver.log 
Exception in thread "main" java.lang.NullPointerException 
    at Test_Chromedriver.main(Test_Chromedriver.java:25) 

注:webdriver的打開鉻瀏覽器然後輸入值到字段,但上面的錯誤是越來越顯示所有的次在控制檯中,最後阻止也沒有執行。

+3

這不是一個錯誤,它是一個例外。請注意,例外會告訴您它發生在第25行。請編輯您的問題,指出哪一行是第25行。 –

回答

4

您的問題來自您的try/catch,特別是您的finally

由於您的driver僅在您的try{}位置,所以...您的finally無法對您的驅動程序進行任何操作。我會重新命名你的驅動程序,以幫助你看到這裏發生了什麼。

public class Test_Chromedriver { 
    public static WebDriver driverNULL; // <- never instantiate 
    public static void main(String[] args) { 
     try { 
      System.setProperty("webdriver.chrome.driver","E:\\jars\\chromedriver.exe"); 
      WebDriver driverOK=new ChromeDriver(); // < - local variable 
      driverOK.get("http://www.facebook.com"); 
      driverOK.findElement(By.id("email")).sendKeys("surya"); 
      driverOK.findElement(By.name("pass")).sendKeys("hello"); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     finally{ 
      driverNULL.close(); // <- want to close a object never instantiate so null pointer exception 
      driverNULL.quit(); 
     } 
    } 
} 

你現在可以做什麼?

public class Test_Chromedriver { 
    public static WebDriver driver; 
    public static void main(String[] args) { 
     try { 
      System.setProperty("webdriver.chrome.driver","E:\\jars\\chromedriver.exe"); 
      driver=new ChromeDriver(); // <- remove the Webdriver type 
      driver.get("http://www.facebook.com"); 
      driver.findElement(By.id("email")).sendKeys("surya"); 
      driver.findElement(By.name("pass")).sendKeys("hello"); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     finally{ 
      driver.close(); 
      driver.quit(); 
     } 
    } 
} 
+1

感謝您的回覆和指導。現在我可以運行沒有「NullPointerException」的代碼 – SuryaQA

+1

與命名的好主意 - 我有類似的問題,並知道你的意思馬上 – kiedysktos

0

也許嘗試使用TestNG和註釋?

http://testng.org/doc/index.html

他們正在做他們的工作相當不錯。

使用這種類型的結構將爲您維護測試和執行提供良好的支持。

import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.chrome.ChromeDriver; 
import org.testng.annotations.AfterClass; 
import org.testng.annotations.BeforeClass; 
import org.testng.annotations.Test; 

public class Test_Chromedriver { 
    public static WebDriver driver; 


    @BeforeClass 
    public void setUp(){ 
     System.setProperty("webdriver.chrome.driver","E:\\jars\\chromedriver.exe""); 
     driver=new ChromeDriver(); 

} 
    @Test 
    public static void TestFacebook() { 
     try { 
      driver.get("http://www.facebook.com"); 
      driver.findElement(By.id("email")).sendKeys("surya"); 
      driver.findElement(By.name("pass")).sendKeys("hello"); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 



@AfterClass 
public void tearDown(){ 
    driver.close(); 
    driver.quit(); 
} 

} 
+0

謝謝你的答覆。只是我安裝了TestNG並使用TestNG運行了上面的測試用例。現在我可以運行沒有「NullPointerException」的測試用例。 – SuryaQA

相關問題