Привет, сообщество: я застрял в следующем выпуске:
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);
}
}