Selenium WedDriver - несколько классов Java

Новое в Selenium

У меня есть базовый класс, который будет инициировать webdriver. Следующие страницы доступны для создания контракта.

Войти-> Выбрать план-> Добавить помещение-> добавить детали

    public class BaseClass {
    public WebDriver driver;
    public WebDriverWait wait;

    public WebDriver getDriver() {
        return driver;
    }

    @BeforeClass(description = "Class Level Setup!")
    public void setup() {
        // Create a Chrome driver. All test classes use this.
        System.setProperty("webdriver.chrome.driver", "/Selenium/chromedriver");
        driver = new ChromeDriver();

        // Create a wait. All test classes use this.
        wait = new WebDriverWait(driver, 15);

        // Maximize Window
        driver.manage().window().maximize();
    }

}

И Login.Test

    public class LoginTest extends BaseClass {

 @Test(priority = 0, description = "This TC is for Senoko login")
  void validateLogin() {
      driver.get("https://url domain/index"); 

      WebElement email = driver.findElement(By.id("userid_txt"));   
      WebElement password = driver.findElement(By.id("password_txt"));
      WebElement login = driver.findElement(By.id("submitBtn"));
      email.sendKeys("a01");
      password.sendKeys("test123");
      login.click();
      HouseholdCheck house=new HouseholdCheck();
      house.houseCheck();
  } 

}

До этого момента работает. В методе validateLogin(), вызывая метод houseCheck, я получаю NullPointerException.

  public class HouseholdCheck extends BaseClass {

@Test
void houseCheck() {
    System.out.println("==== = " + driver);
    driver.get("https://a-sit.aspx?source=CSP&key=1");
    WebElement radio1 = driver.findElement(By.xpath("//input[@name='resbiz' and @value='households']"));
    WebElement radio2 = driver.findElement(By.xpath("//input[@name='resbiz' and @value='business']"));
    radio1.click();
    WebElement radbutton = driver.findElement(By.xpath("//button[contains(.,'Continue')]"));
    radbutton.click();
    PlanSelect plnslct = new PlanSelect();
    plnslct.planSelect(driver);
}

}

В классе HouseholdCheck нет доступа к driver. Выдача NullPointerException. Подскажите, пожалуйста, как перевести водителя в следующие классы? Если класс расширяет BaseClass, почему этот класс не может получить объект драйвера?

Я бы посоветовал использовать любую структуру, которая обеспечивает управление драйверами и другие потребности функционального тестирования. Один из фреймворков с открытым исходным кодом, который вы можете попробовать, - qaf. Обратитесь к пошаговое руководство по qaf

user861594 25.07.2018 21:31
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
1
55
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

В HouseholdCheck house = new HouseholdCheck(); вы создаете новый экземпляр BaseClass, где driver никогда не инициализировался. Вы вызываете houseCheck() как метод, а не запускаете его как тест, поэтому setup() не выполняется.

Одно из решений - сделать driver статичным.

private static WebDriver driver;

public static WebDriver getDriver() {
    return driver;
}
public class BaseClass {
    public static WebDriver driver;

Просто сделайте это статичным, и все готово.

Другие вопросы по теме