Перейти к содержимому

Фотография

Статический WebDriver и PageFactory


  • Авторизуйтесь для ответа в теме
В теме одно сообщение

#1 Raindrops

Raindrops

    Новый участник

  • Members
  • Pip
  • 23 сообщений

Отправлено 21 июня 2018 - 15:05

Структура выглядела примерно так:

"Фабрика"

 

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


  • 0

#2 Alex

Alex

    Постоянный участник

  • Members
  • PipPipPip
  • 237 сообщений
  • ФИО:Алексей

Отправлено 25 июня 2018 - 08:02

 

Структура выглядела примерно так:

"Фабрика"

 

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

 

Так а где factory инициализируется?


  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных