2013-06-21 62 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

相关问题