Selenium 位于feature.StepDefinitions的java.lang.NullPointerException

Selenium 位于feature.StepDefinitions的java.lang.NullPointerException,selenium,selenium-webdriver,cucumber,Selenium,Selenium Webdriver,Cucumber,我得到一个NullPointerException,如下所示: 功能:登录操作 情景: Successful Login with Valid Credentials # C:/Users/chaitanya/workspace/cucumber2/src/feature/myfeature.feature:3 Given User is on Home Page # StepDefinitions.User_is_on_Home_Page() When

我得到一个
NullPointerException
,如下所示:

功能:登录操作

情景:

Successful Login with Valid Credentials # C:/Users/chaitanya/workspace/cucumber2/src/feature/myfeature.feature:3
Given User is on Home Page                      # StepDefinitions.User_is_on_Home_Page()
When User enters UserName and Password          # StepDefinitions.User_enters_UserName_and_Password()
  java.lang.NullPointerException
    at feature.StepDefinitions.User_enters_UserName_and_Password(StepDefinitions.java:25)
    at ?.When User enters UserName and Password(C:/Users/chaitanya/workspace/cucumber2/src/feature/myfeature.feature:5)

Then Message displayed Login Successfully       # StepDefinitions.Message_displayed_Login_Successfully()
代码:


User\u位于
中,您正在该方法中使用名为
driver
的局部变量。您没有设置其他方法正在使用的静态
驱动程序
。因此,当它们引用
驱动程序时
仍然为空

解决办法是改变:

public static WebDriver driver;
致:

并删除
WebDriver=newfirefoxdriver()User\u的code>行位于\u Home\u Page()
上,因此它同样引用静态实例

或者,惰性地实例化静态驱动程序实例。替换:

WebDriver driver = new FirefoxDriver();
中,用户\u位于\u主页()
上,具有:

if (driver == null) {
    driver = new FirefoxDriver();
}

我刚刚从Webdriver=newfirefoxdriver()中删除了Webdriver;“它工作得很好。是的,尽管实例化静态对象比在实例方法中(重新)设置静态对象更干净。如果处理程序被调用两次,它将创建两个浏览器。
WebDriver driver = new FirefoxDriver();
if (driver == null) {
    driver = new FirefoxDriver();
}