Я использую технику внедрения зависимостей для вызова драйвера в моем классе определения шага. В первом классе я инициализировал драйвер chrome и установил его в класс DI. Но при запуске кода он не используется в моем следующем шаге. Класс определения.
Создал драйвер в DIClass, а затем инициировал драйвер chrome в классе входа. а затем установите объект драйвера chrome в драйвер DIClass, но при достижении класса определения второго шага я получаю ошибку нулевого указателя в методе гамбургера.
DIClass:
public class DIClass {
public WebDriver driver;
public WebDriver getDriver() {
return driver;
}
public void setDriver(WebDriver driver) {
this.driver = driver;
}
StepDefinition class:
public class LoginPage extends DIClass{
DIClass base;
public LoginPage(DIClass testContextUI) {
this.base = testContextUI;
}
@Given("I open a {string} browser")
public void i_open_a_browser(String browser) {
// System.setProperty("webdriver.chrome.driver", "/Users/vinoth/eclipse-workspace/yocoBoardI/chromedriver");
// WebDriver driver = new ChromeDriver();
// base.signIn = PageFactory.initElements(base.driver, SignIn.class);
}
@Given("I navigate to url {string}")
public void i_navigate_to_url(String url) {
System.setProperty("webdriver.chrome.driver", "/Users/vinoth/eclipse-workspace/yocoBoardI/chromedriver");
WebDriver driver = new ChromeDriver();
base.setDriver(driver);
base.signIn = PageFactory.initElements(base.driver, SignIn.class);
base.driver.get(url);
}
@When("user login into application with {string} and {string}")
public void user_login_into_application_with_and(String string, String string2) {
base.signIn.normalSignIn(string, string2);
}
@Then("I navigated to Hours page")
public void i_navigated_to_Hours_page() throws InterruptedException {
base.hoursPage = PageFactory.initElements(base.driver, HoursPage.class);
base.hoursPage.validateHOursPage();
// base.pages = PageFactory.initElements(base.driver, LeftSideBar.class);
// base.pages.clockInOut();
// base.driver.quit();
}
}
2nd Class:
public class ProfileSettings {
// WebDriver driver;
DIClass base;
LoginPage loginPage;
public ProfileSettings(DIClass testContextUI) {
this.base = testContextUI;
}
@Given("User should see the hamburger icon")
public void user_should_see_the_hamburger_icon() {
// base.setDriver(driver);
base.profileSettings = PageFactory.initElements(base.driver, ProfileSettingsPage.class);
base.profileSettings.hamburgerIcon(); - here i am getting the error .
}
@When("I clicks the profile settings label")
public void i_clicks_the_profile_settings_label() {
base.profileSettings.openFooterPopup();
}
@Then("landed to the respective page.")
public void landed_to_the_respective_page() {
base.profileSettings.validateProfileSettingsPage();
}
@When("I upload Invalid {string} formats")
public void i_upload_Invalid_formats(String string) {
//StringSelection is a class that can be used for copy and paste operations.
StringSelection stringSelection = new StringSelection(string);
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(stringSelection, null);
base.profileSettings.fileUpload("Mac");
}
@Then("Should see the respective voice message")
public void should_see_the_respective_voice_message() {
base.profileSettings.fileUploadValidation();
}