Новое в 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, почему этот класс не может получить объект драйвера?




В 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;
Просто сделайте это статичным, и все готово.
Я бы посоветовал использовать любую структуру, которая обеспечивает управление драйверами и другие потребности функционального тестирования. Один из фреймворков с открытым исходным кодом, который вы можете попробовать, - qaf. Обратитесь к пошаговое руководство по qaf