Огуречный селен (Java) - PageFactory - NullPointException получает URL - PullRequest
0 голосов
/ 25 февраля 2020

Привет, сообщество: я застрял в следующем выпуске:

java.lang.NullPointerException
    at pages.Page_First.getURL(Page_First.java:31)
    at stepdefs.Step_First.I_go_to_Google(Step_First.java:22)
    at ✽.I go to Google (src/test/resources/features/first.feature:9)

Это моя особенность:

Feature: Navigation Test

  As a user, bla, bla, bla...

  Scenario: Search google.com to verify google search is working

    Given I go to Google
    When I query for "<search>" cucumber spring selenium
    And click search
    Then google page title should become the first page

Это следующий мой DriverClass

public class DriverClass implements Constants {

    // Take the instance of WebDriver
    protected static WebDriver driver;

    //Initialize a log
    protected static final Logger log = Logger.getLogger(BasePage.class.getName());


    public static WebDriver initializeDriver() throws IOException {

        String browser = ReadProperties.getPropertyValue(key_browser);


        if(browser.equals("chrome")) {
            WebDriverManager.chromedriver().setup();
            driver = new ChromeDriver();

        } else if(browser.equals("firefox")) {
            WebDriverManager.firefoxdriver().setup();
            driver = new FirefoxDriver();

        } else if(browser.equals("ie")) {
                WebDriverManager.iedriver().setup();
                driver = new InternetExplorerDriver();

        } else if(browser.equals("edge")) {
            WebDriverManager.edgedriver().setup();
            driver = new EdgeDriver();

        } else {
            System.setProperty("webdriver.safari.driver","/usr/bin/safaridriver");
            driver = new SafariDriver();
        }
        return driver;
    }
}

Это другой мой DriverInitializer Класс

public class DriverInitializer extends DriverClass {


    @Before
    public void initialize() throws IOException {

        log.info("-----> Proceed to initialize driver <-----");

        driver = DriverClass.initializeDriver();
        driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
        driver.manage().window().maximize();

        if (driver == null) {
            log.info("-----> Driver did not initialize correctly <-----");
        }
    }

    @After
    public void close(){
        driver.quit();
    }
}

Мой Страница Класс:

public class Page_First extends BasePage implements Constants {

    public Page_First() {
        PageFactory.initElements(driver, this); }


    //////////////////////////////////////////////WEB ELEMENTS//////////////////////////////////////////////////////////

    @FindBy(name = "q")
    private WebElement searchText;

    @FindBy(name="btnK")
    private WebElement searchButton;

    //////////////////////////////////////////////BASE METHODS//////////////////////////////////////////////////////////

    public void getURL() throws IOException {

        String url = ReadProperties.getPropertyValue(key_url);
        driver.get(url);

И мой Определение шага :

public class Step_First {

    public static WebDriver driver;
    private Page_First page_first = PageFactory.initElements(driver, Page_First.class);


    @Given("I go to Google")
    public void I_go_to_Google () throws IOException {

        page_first.getURL();
    }

Я знаю, что проблема в следующем фрагменте кода (страницы):

String url = ReadProperties.getPropertyValue(key_url);
driver.get(url);

Кстати: это мой Константы класс

publi c Интерфейс Константы {

String key_url = "url";
String key_browser = "browser";

}

Пожалуйста, мне нужна ваша помощь. Заранее спасибо

Обновлено: это мой файл для чтения файлов свойств:

public class ReadProperties {

    public static final String filePath = "src/main/resources/data/config.properties";


    public static String getPropertyValue(String key) throws IOException {
        Properties prop = new Properties();
        FileInputStream fis = new FileInputStream(filePath);
        prop.load(fis);
        fis.close();
        return prop.getProperty(key);
    }
}

1 Ответ

1 голос
/ 27 февраля 2020

Может быть, он не находит ваш путь. Попробуйте это:

public class ReadProperties {

    public static String getPropertyValue(String key) throws IOException {
        String filePath = "src/main/resources/data/config.properties";
        InputStream input = new FileInputStream(filePath);
        Properties prop = new Properties();

        try (input) {
            prop.load(input);
            return prop.getProperty(key);
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
}
...