java .lang.NullPointerException ошибка в объектной модели страницы с огурцом - PullRequest
0 голосов
/ 04 августа 2020

Я получаю java .lang.NullPointerException при использовании объектной модели страницы с огурцом. Я не уверен, что я здесь делаю не так, пожалуйста, помогите мне в этом

Ниже мой тестовый базовый класс:

package com.qa.util;

import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;
import java.util.concurrent.TimeUnit;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.edge.EdgeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;

public class TestBase {

    public static WebDriver driver;
    public static  Properties prop;

    //public WebDriver initializeWebDriver() throws IOException
    public static void initializeWebDriver() throws IOException
    {

        prop = new Properties();
        FileInputStream fis = new FileInputStream("D:\\Automation\\WebAutomation\\src\\main\\java\\com\\qa\\config\\config.properties");

        prop.load(fis);
        String browserName = prop.getProperty("browser");

        //Execute in Chrome
        if(browserName.equals("Chrome"))
        {
            System.setProperty("webdriver.chrome.driver","D:\\Drivers\\chromedriver.exe");
            driver=new ChromeDriver();  
            //driver.manage().window().maximize();          
        }
        //Execute in FireFox
        else if(browserName.equals("Firefox"))
        {
            System.setProperty("webdriver.gecko.driver","D:\\Drivers\\geckodriver-v0.19.1-win64(1)");
            driver = new FirefoxDriver();
        }

        driver.manage().window().maximize();
        driver.get(prop.getProperty("appURL"));
        driver.manage().timeouts().pageLoadTimeout(TestUtil.PAGE_LOAD_TIMEOUT,TimeUnit.SECONDS);
        driver.manage().timeouts().implicitlyWait(TestUtil.IMPLICIT_WAIT, TimeUnit.SECONDS);
        return driver;

    }

}

Ниже моя страница входа в систему Класс объектов

package com.qa.pages;

import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.PageFactory;

import com.qa.util.TestBase;

public class LoginPage extends TestBase {

    public LoginPage()  {
        /*super(driver);
        this.driver=driver;*/
        PageFactory.initElements(driver, this);
    }

    // Login Page Title
    
    public String validateLoginPageTitle() {
        return driver.getTitle();
    }
    
    // Welcome text

    @FindBy(css=".login-form > h2:nth-child(1)")
    WebElement header;

    public String loginPageHeaderText() {
        return header.getText();
    }
}

Ниже мой Step Def

package com.qa.stepdefinations;

import java.io.IOException;

import org.testng.Assert;

import com.qa.pages.LoginPage;
import com.qa.util.TestBase;

import cucumber.api.java.en.And;
import cucumber.api.java.en.Given;
import cucumber.api.java.en.Then;
import cucumber.api.java.en.When;

public class LoginStepDef extends TestBase {
    
    LoginPage LoginPage = new LoginPage();
    
     @Given("^I launch browser and access the GE URL$")
    public void i_launch_browser() throws IOException {
         
        TestBase.initializeWebDriver();
    }
    
    @Then("^I am on Login Page$")
    public void i_am_on_login_page() {
        
        String expectedLoginPageTile = prop.getProperty("LoginPage_Title");
        String actualLoginPageTitle = LoginPage.validateLoginPageTitle();
        Assert.assertEquals(actualLoginPageTitle, expectedLoginPageTile);
    }

    @Then("^I verify header text is displaying$")
    public void i_verify_header_text_is_displaying() {
         String expectedHeaderText = prop.getProperty("LoginPage_Expected_Header");
         String actualdHeaderText = LoginPage.loginPageHeaderText();
         Assert.assertEquals(actualdHeaderText, expectedHeaderText);
    }
}

Скрипт работает нормально для LoginPage.validateLoginPageTitle();, однако я не уверен, почему он не работает для следующего шага, т.е. LoginPage.loginPageHeaderText();

1 Ответ

0 голосов
/ 04 августа 2020

Похоже, проблема в вашем локаторе, проверьте его правильность.

@FindBy(css="<b><em>.login-form > h2:nth-child(1)</em></b>")
    WebElement header;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...