通过Chrome中的Selenium webDriver运行测试用例时出现java.lang.NullPointerException

Sur*_*aQA 1 java selenium-webdriver

我的班级使用Selenium WebDriver并抛出错误.

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();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

一旦我运行上面的代码错误消息得到:

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)
Run Code Online (Sandbox Code Playgroud)

注意:webdriver打开chrome浏览器然后将值输入到字段中,但是上面的错误在控制台中一直显示,最后阻止也没有执行.

e1c*_*che 5

你的麻烦来自你的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();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

你现在可以做什么 ?

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();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)