在黄瓜中使用 pojo 类时出现空指针异常

维克拉玛蒂亚·阿南德

我正在尝试通过黄瓜中的 pojo 类传递数据,但出现空指针异常

我的功能文件如下-:

Feature: Registeration in Mercuryflight site

  Background: 
    Given I've a valid set of data and access pojo

  @Registrationpojo
  Scenario: Multiple  user Registration process using pojo
    When Registeration page Display for pojo
    Then Enter valid data for successful registration pojo
      | username  | password | confirmpassword |
      | aditya91p | test123  | test123         |
      | rakesh90p | test123  | test123         |
      | preety18p | test123  | test123         |
    And close

我的 pojo 课程如下-:

package com.Cucumber_Maven.test;

public class UserData {

    private String username;
    private String password;
    private String confirmpassword;

public UserData(String username, String password, String confirmpassword) {

        this.username = username;
        this.password = password;
        this.confirmpassword = confirmpassword;
    }


    public String getUserName() {
        return username;
    }
    public String getPassword() {
        return password;
    }
    public String getConfirmPassword() {
        return confirmpassword;
    }




}

我的步骤定义如下-:

package com.Cucumber_Maven.test;

import java.util.List;

import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;

import cucumber.api.DataTable;
import cucumber.api.PendingException;
import cucumber.api.Scenario;
import cucumber.api.java.en.Given;
import cucumber.api.java.en.Then;
import cucumber.api.java.en.When;
import junit.framework.Assert;

public class StepPojo {

    WebDriver driver;
    Scenario scenario;


    @Given("^I've a valid set of data and access pojo$")
    public void i_ve_a_valid_set_of_data_and_access_pojo() throws Throwable {
         System.out.println("Pojo class demo ");
            System.setProperty("webdriver.chrome.driver", System.getProperty("user.dir")+"/src/test/resource/driver/chromedriver.exe");
             driver = new ChromeDriver();
             this.scenario= scenario;
    }

    @When("^Registeration page Display for pojo$")
    public void registeration_page_Display_for_pojo() throws Throwable {
        driver.manage().window().maximize();
        driver.navigate().to("http://newtours.demoaut.com/");
        Thread.sleep(5000);
        WebElement register=driver.findElement(By.linkText("REGISTER"));
        register.click();
    }

    /*@Then("^Enter valid data for successful registration pojo$")
    public void enter_valid_data_for_successful_registration_pojo(List<UserData> pojolist) throws Throwable {
       scenario.write("entering user registeration details...");
       System.out.println("Total user..."+pojolist.size());

       for(UserData data :pojolist) {

           System.out.println(data.getUserName() +" with pswd is "+data.getPassword());
           driver.findElement(By.xpath(".//*[@id='email']")).sendKeys(data.getUserName());
           driver.findElement(By.xpath(".//*[@name='password']")).sendKeys(data.getPassword());
           driver.findElement(By.xpath("")).sendKeys(data.getConfirmPassword());


           driver.findElement(By.xpath(".//*[@name='register']")).click();


            //assertion
            Thread.sleep(3000);
            String msg=driver.findElement(By.xpath(".//*[contains(text(),'Dear')]")).getText();
            System.out.println(msg);
           Assert.assertTrue("text is getting displayed", msg.contains("Dear"));
            //clicking on register



            WebElement register=driver.findElement(By.linkText("REGISTER"));
            JavascriptExecutor js=(JavascriptExecutor) driver;
            js.executeScript("arguments[0].setAttribute('target','_self');", register);
            register.click();
       }



    }*/

    @Then("^Enter valid data for successful registration pojo$")
    public void enter_valid_data_for_successful_registration_pojo(List<UserData> pojolist) throws Throwable {
        scenario.write("entering user registeration details...");
           System.out.println("Total user..."+pojolist.size());

           for(UserData data :pojolist) {

               System.out.println(data.getUserName() +" with pswd is "+data.getPassword());
               driver.findElement(By.xpath(".//*[@id='email']")).sendKeys(data.getUserName());
               driver.findElement(By.xpath(".//*[@name='password']")).sendKeys(data.getPassword());
               driver.findElement(By.xpath("")).sendKeys(data.getConfirmPassword());


               driver.findElement(By.xpath(".//*[@name='register']")).click();


                //assertion
                Thread.sleep(3000);
                String msg=driver.findElement(By.xpath(".//*[contains(text(),'Dear')]")).getText();
                System.out.println(msg);
               Assert.assertTrue("text is getting displayed", msg.contains("Dear"));
                //clicking on register



                WebElement register=driver.findElement(By.linkText("REGISTER"));
                JavascriptExecutor js=(JavascriptExecutor) driver;
                js.executeScript("arguments[0].setAttribute('target','_self');", register);
                register.click();
           }
    }


}

我的错误跟踪是 -:

 Background:                                      # C:/Users/krsna/eclipse-workspace/Cucumber_Maven/src/test/resource/mercuryflight.feature:3
    Given I've a valid set of data and access pojo # StepPojo.i_ve_a_valid_set_of_data_and_access_pojo()

  @Registrationpojo
  Scenario: Multiple  user Registration process using pojo # C:/Users/krsna/eclipse-workspace/Cucumber_Maven/src/test/resource/mercuryflight.feature:7
    When Registeration page Display for pojo               # StepPojo.registeration_page_Display_for_pojo()
    Then Enter valid data for successful registration pojo # StepPojo.enter_valid_data_for_successful_registration_pojo(UserData>)
      java.lang.NullPointerException
        at com.Cucumber_Maven.test.StepPojo.enter_valid_data_for_successful_registration_pojo(StepPojo.java:79)
        at ✽.Then Enter valid data for successful registration pojo(C:/Users/krsna/eclipse-workspace/Cucumber_Maven/src/test/resource/mercuryflight.feature:9)

    And close                                              # StepDefinitionDemo.close()

Failed scenarios:
C:/Users/krsna/eclipse-workspace/Cucumber_Maven/src/test/resource/mercuryflight.feature:7 # Scenario: Multiple  user Registration process using pojo

1 Scenarios (1 failed)
4 Steps (1 failed, 1 skipped, 2 passed)
0m40.507s

我的文件夹结构如下-:

在此处输入图片说明

任何帮助解决这个问题将不胜感激。

我的 pom 文件也是 -:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com</groupId>
    <artifactId>Cucumber_Maven</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>Cucumber_Maven</name>
    <url>http://maven.apache.org</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
             <scope>test</scope>
        </dependency>


        <dependency>
            <groupId>info.cukes</groupId>
            <artifactId>cucumber-core</artifactId>
            <version>1.2.5</version>
        </dependency>




        <!-- <dependency> <groupId>info.cukes</groupId> <artifactId>cucumber-java</artifactId> 
            <version>1.2.5</version> <scope>test</scope> </dependency> <dependency> <groupId>info.cukes</groupId> 
            <artifactId>cucumber-junit</artifactId> <version>1.2.5</version> </dependency> -->


        <dependency>
            <groupId>info.cukes</groupId>
            <artifactId>cucumber-java</artifactId>
            <version>1.2.0</version>
            <!-- <scope>test</scope> -->
        </dependency>

        <dependency>
            <groupId>info.cukes</groupId>
            <artifactId>cucumber-junit</artifactId>
            <version>1.2.0</version>
        </dependency>







        <dependency>
            <groupId>info.cukes</groupId>
            <artifactId>cucumber-jvm</artifactId>
            <version>1.2.5</version>
             <type>pom</type> 
        </dependency>







        <dependency>
            <groupId>info.cukes</groupId>
            <artifactId>cucumber-jvm-deps</artifactId>
            <version>1.0.5</version>
        </dependency>

        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>3.9.1</version>
        </dependency>


    </dependencies>
</project>

我在 - 中收到此行的错误:

 @Then("^Enter valid data for successful registration pojo$")
    public void enter_valid_data_for_successful_registration_pojo(List<UserData> pojolist) throws Throwable {
        scenario.write("entering user registeration details...");
           System.out.println("Total user..."+pojolist.size());
次优

也许 NPE 在方法enter_valid_data_for_successful_registration_pojo(...)被抛出

scenario.write("entering user registeration details...");

变量scenario是较新的分配给任何对象(至少不是在呈现的代码中)

Scenario scenario;

在方法中i_ve_a_valid_set_of_data_and_access_pojo()你有这个任务

this.scenario= scenario;

它分配给scenario自己,所以它保持null.

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在Java中使用泛型时出现空指针异常

使用BIMserver Java客户端检索类的所有实例时,出现空指针异常

当我使用pojo时,出现异常了吗?

使用空引用访问数组时出现空指针异常

使用 AutocompleteTextView 和 BaseAdapter 时出现空指针异常

使用Java Compiler API时出现空指针异常

使用Bundle传递数据时出现空指针异常

使用PDF Viewer Lib时出现空指针异常

使用LayoutInflator()时是否出现空指针异常?

使用@Autowired注解注入Bean时出现空指针异常

使用JDBC查询执行executeUpdate时出现空指针异常

尝试使用 riemann 写入文件时出现空指针异常

在 spring security dofilter 身份验证方法中使用 @Autowired 注释时出现空指针异常

在JENA virtuoso中的SPARQL查询中使用BIND时出现空指针异常错误

在 Fragment 中使用适配器时出现空指针异常

在 Android Studio 中使用 ListView 时出现运行时错误(空指针异常)

如何在POJO类中使用HashMap并检索它?

在黄瓜胶水选项包中使用多个类

为什么在另一个类中使用PrintWriter时会出现PrintWriter空指针异常

尝试在方法中使用(java.util.Random)时出现空指针异常-初学者Java

使用共享首选项在onCreate中检索textView时出现空指针异常

使用Admob中介显示Vungle广告时,出现空指针异常

使用HttpSession时获取空指针异常

使用Mockito时面临空指针异常

使用imageView时,空指针异常

使用休眠保存嵌套的 POJO 类对象

在Android中使用Gson处理Json Array到POJO Array的映射中单个对象的异常

从JSON读取文件到POJO时获取空指针

尝试访问POJO属性时为空指针