Java 我使用与2个用户相同的功能文件登录以进行添加和批准。但在运行时,它显示空指针异常

Java 我使用与2个用户相同的功能文件登录以进行添加和批准。但在运行时,它显示空指针异常,java,selenium-webdriver,automation,pageobjects,cucumber-java,Java,Selenium Webdriver,Automation,Pageobjects,Cucumber Java,我刚刚开始使用含硒黄瓜。如果我方有任何错误,请忽略。 我有两种场景。 1.以用户身份登录并添加配置文件。 2.以用户B身份登录并批准配置文件 对于这两种情况,我有一个相同的文件。 特征文件如下所示 @Login Scenario Outline: Login into application with valid credentials Given enter '<Username>' and '<Password>' When clicking submit b

我刚刚开始使用含硒黄瓜。如果我方有任何错误,请忽略。 我有两种场景。 1.以用户身份登录并添加配置文件。 2.以用户B身份登录并批准配置文件

对于这两种情况,我有一个相同的文件。 特征文件如下所示

@Login 
Scenario Outline: Login into application with valid credentials
Given enter '<Username>' and '<Password>'   
When clicking submit button
Then System should logged into application 
Examples:
|Username|Password    |
|aaaa    |aaa@123     |

@LoginApprover 
Scenario Outline: Login as Approver application with valid credentials
Given enter approver credentials '<AppUsername>' and '<AppPassword>'    
When clicking login button
Then Approver should be logged into application 
Examples:
|AppUsername|AppPassword |
|bbb        |bbb@123   |
我的步骤定义类

public class LoginDefn extends details{

@Given("^enter '(.*)' and '(.*)'$")
public void enter_username_and_password(String username, String password)
        throws Throwable {
    lp=getPageFactoryObject(Login.class);
    lp.enterUsername(username);
    lp.enterPassword(password);
}

@When("^clicking submit button$")
public void clicking_submit_button() throws Throwable {
    lp.clickSignInButton();     
}


@Then("^System should logged into application$")
public void system_should_logged_into_application() throws Throwable {

}

@Then("^System should not logged into application and prompt msg as(.*)$")
public void system_should_not_logged_into_application_and_prompt_msg_as_Invalid_username_and_password(String msg) throws Throwable {
    Thread.sleep(2000);
    lp.alertmessageVerification(msg);       
    //lp.clearusernameandpassword();
}

@Given("^enter approver credentials '(.*)' and '(.*)'$")
public void enter_approver_credentials_and_(String appusername, String apppassword) throws Throwable {
    lp.enterUsername(appusername);
    lp.enterPassword(apppassword);
}

@When("^clicking login button$")
public void clicking_login_button() throws Throwable {
    lp.clickSignInButton();
}

@Then("^Approver should be logged into application$")
public void approver_should_be_logged_into_application() throws Throwable {
    //do nothing
}
} 我的试跑课

@ContextConfiguration(loader = AnnotationConfigContextLoader.class)
@CucumberOptions(features = { "src\\test\\java\\com\\Features\\" }, glue = 
{"definitions" }, plugin = {
"pretty", "json:target/cucumber.json" }, tags = 
{"@Login,@LoginApprover"}, monochrome = true)
@RunWith(Cucumber.class)

任何人请帮我解决这个问题。

我看不出您在哪里定义steps类中使用的“lp”类型。我看到您试图在那里初始化它,但从未声明我可以看到它。您可能想将其定义为类登录(您的页面对象)。如果您打算在每个(或几乎每个)步骤中使用它,则应在steps类中将其定义为:

public class LoginDefn extends details{

Login lp;

@Given("^enter '(.*)' and '(.*)'$")

public void enter_username_and_password(String username, String password)
        throws Throwable {
    lp=getPageFactoryObject(Login.class);

然后,我认为代码的其余部分可以正常工作,但我没有深入研究这一点。

如果可能,请提供详细信息和所有详细信息java文件。@Akarsh。感谢您的关注。问题已经解决。对于approver登录,我删除了标签Loginapprover。现在它工作了。实际上我是在使用另一个功能文件添加一个配置文件,在添加配置文件之后,我必须以另一个用户的身份登录并批准它。已通过在同一功能文件中添加审批人登录名来修复此问题。谢谢你的建议。
public class LoginDefn extends details{

Login lp;

@Given("^enter '(.*)' and '(.*)'$")

public void enter_username_and_password(String username, String password)
        throws Throwable {
    lp=getPageFactoryObject(Login.class);