Как разрешить исключение нулевого указателя при вызове экземпляра драйвера из одного класса в другой класс с помощью внедрения зависимостей с огурцом - PullRequest
0 голосов
/ 20 июня 2020

Я использую технику внедрения зависимостей для вызова драйвера в моем классе определения шага. В первом классе я инициализировал драйвер 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();
    }

    

1 Ответ

0 голосов
/ 22 июня 2020
import depenencyInjection.DIClass;
import io.cucumber.java.After;
import io.cucumber.java.Before;
import org.junit.BeforeClass;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
public class DriverClass extends DIClass {
    DIClass base;
    public DriverClass(DIClass testContextUI) {
        this.base = testContextUI;
    }
    @Before
    public void testStep()
    {
        if(base.getDriver() ==null) {
            System.out.println("Test Environment Setup");
            System.setProperty("webdriver.chrome.driver", "Filepath");
            ChromeOptions options = new ChromeOptions();
            options.addArguments("--start-maximized");
            base.driver = new ChromeDriver(options);
            base.driver.navigate().to("https:********");
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...