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();
}