Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Selenium 运行硒、黄瓜和页面工厂。第二步定义无法运行_Selenium_Cucumber_Page Factory - Fatal编程技术网

Selenium 运行硒、黄瓜和页面工厂。第二步定义无法运行

Selenium 运行硒、黄瓜和页面工厂。第二步定义无法运行,selenium,cucumber,page-factory,Selenium,Cucumber,Page Factory,我编写了一个cucumber框架,它有两个特性文件和两个步骤定义,它们粘在特性文件上。当我一起运行测试时,它运行第一个步骤定义,但无法进入第二个步骤定义。我已初始化我的页面,但无法使其工作 错误和代码如下 java.lang.NullPointerException at org.openqa.selenium.support.pagefactory.DefaultElementLocator.findElement(DefaultElementLocator.java:69)

我编写了一个cucumber框架,它有两个特性文件和两个步骤定义,它们粘在特性文件上。当我一起运行测试时,它运行第一个步骤定义,但无法进入第二个步骤定义。我已初始化我的页面,但无法使其工作

错误和代码如下

java.lang.NullPointerException
    at org.openqa.selenium.support.pagefactory.DefaultElementLocator.findElement(DefaultElementLocator.java:69)
    at org.openqa.selenium.support.pagefactory.internal.LocatingElementHandler.invoke(LocatingElementHandler.java:38)
    at com.sun.proxy.$Proxy19.click(Unknown Source)
    at Pages.HomePage.CreateANewOrderPage.createOrderLink(CreateANewOrderPage.java:35)
    at StepDefinitions.CreateOrderStep.user_click_on_create_a_new_order(CreateOrderStep.java:24)
    at ✽.When user click on create a new order(CreateOrder.feature:5)


 public class CreateANewOrderPage  {
           WebDriver driver;
     public CreateANewOrdePage(WebDriver driver){
            this.driver=driver;
            PageFactory.initElements(driver, this);
        }

        @FindBy (linkText= "Create a new order")
        public WebElement createOrderLink;

     public void createOrderLink(){
            createOrderLink.click();
        }

public class SigninPage {

    WebDriver driver;
        public SigninPage(WebDriver driver) {
        this.driver=driver;
        PageFactory.initElements(driver, this);
    }

    @FindBy(xpath="//*[@id=\"userName\"]")
    public WebElement usernameField;

    @FindBy(name="password")
    public WebElement passwordField;

    @FindBy(id="buttonSubmitLogin")
    public WebElement submitBtn;

 public void loginDetails(String uname, String psw) {

        usernameField.sendKeys(uname);
        passwordField.sendKeys(psw);}

        public void clickLogin(){
            submitBtn.click();
        }  
}


 public class SigninStep {
         WebDriver driver;

        SigninPage logIn = new SigninPage(driver);    

        @Given("^user navigates to mySite$")
        public void userNavigatesToMysite() throws Throwable {
            System.setProperty("webdriver.chrome.driver", "C:\\Users\\mypc\\Documents\\Automation\\drivers\\chromedriver.exe");
            driver=new ChromeDriver();
            driver.get("www.com");
            driver.manage().window().maximize();
            driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

        }

            @And("^user enter \"([^\"]*)\" and \"([^\"]*)\"$")
        public void userEnterValidCredentials(String validuname, String validpsw) throws Throwable {
            SigninPage logIn = new SigninPage(driver);
            logIn.loginDetails("jdjdjdj","jjdjdj");

        }
     @When("^user click on Sign in$")
        public void userClickSignIn() throws Throwable {
           SigninPage logIn = new SigninPage(driver);
           logIn.clickLogin();
                }
    }


public class CreateOrderStep  {

       WebDriver driver;

        CreateANewOrderPage ordercreate;

        @When("^user click on create a new order$")
        public void user_click_on_create_a_new_order() throws Throwable {
    ordercreate= PageFactory.initElements(driver,CreateANewOrderPage.class);
            ordercreate.createOrderLink();

        }

    @RunWith(Cucumber.class)
    @CucumberOptions (features = "src\\test\\java\\Features\\",
                       glue ={"StepDefinitions"},
                       tags={"@Signin, @CreateOrder"}
                       //format = {"pretty", "html:target/Destination.."}
           // format={"json:target/Destination/cucumber.json"
    )

    public class SigninRunner {

    }

在没有添加任何代码的情况下,唯一需要检查的是现有驱动程序实例没有被传递到第二个pageobject。@Grasshopper我已经添加了代码。谢谢有人能帮我吗?Thanks@Grasshopper你能帮个忙吗。谢谢