Работает селен, огурец и пейдж Фабрика. Определение второго шага не выполняется - PullRequest
0 голосов
/ 06 сентября 2018

Я написал фреймворк для огурцов, который имеет два файла функций и два пошаговых определения, которые приклеены к файлам объектов. Когда я запускаю тест вместе, он запускается для первого шага определения и не может войти во второй шаг определения. Я инициализировал свои страницы и пока не смог заставить его работать.

Ошибка и коды ниже

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 {

    }
...