Структура выглядела примерно так:
"Фабрика"
public class Factory{
WebDriver webDriver;
public Factory(WebDriver driver){
webDriver = driver;
}
public LoginPage loginPage (){
return new LoginPage(webDriver);
}
}
Фабричная страница
public class LoginPage {
private WebDriver webDriver;
public LoginPage(WebDriver driver){
webDriver = driver;
PageFactory.initElements(webDriver, this);
}
}
И, собсна, сами тесты
public class Tests {
WebDriver webDriver;
Factory factory;
@Before
public void preCondition(){
System.setProperty("webdriver.chrome.driver", "chromedriver.exe");
webDriver = new ChromeDriver();
factory = new Factory(webDriver);;
}
@Test
public void test(){
factory.loginpage.element.click();
}
Но вдруг понадобилось использовать статический @Beforeclass и схема начала сыпаться. Своего ума хватило только на это:
Собсна фабричный класс:
public class Factory {
static WebDriver webDriver;
public Factory (WebDriver driver){
webDriver = driver;
}
public LoginPage loginPage(){
return new LoginPage(webDriver);
}
}
public class LoginPage {
WebDriver webDriver;
public LoginPage(WebDriver driver) {
webDriver = driver;
PageFactory.initElements(TestClass.webDriver, this);
}
}
И, собсна, NullPointException:
public class Test {
@BeforeClass
public static void setupClass() {
System.setProperty("chromedriver.exe");
webDriver = new ChromeDriver();
}
@Test
public void add(){
factory.loginPage().PasswordField.click();
}
}
Помогите идиоту правильно инициализировать webDriver