Всем привет, нужна ваша помощь. Сейчас изучаю Page Object и столкнулся с проблемой Page Factory. Не работает @FindBy, error: [NullPointerException] код следующий:
public class BasePage {
protected static WebDriver driver;
public static WebDriver getDriver() {
return driver;
}
public static void setUp() throws MalformedURLException {
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setBrowserName("chrome");
capabilities.setVersion("75.0");
capabilities.setCapability("enableVNC", true);
capabilities.setCapability("enableVideo", false);
driver = new RemoteWebDriver(
URI.create("http://127.0.0.1:4444/wd/hub").toURL(),
capabilities
);
}
}
public class GoogleHomePage {
@FindBy(how = How.LINK_TEXT, linkText = "Gmail")
private WebElement linkText;
public GoogleHomePage(WebDriver driver) throws InterruptedException {
driver.get("https://google.com");
Thread.sleep(5000); //pause 5 second
// driver.findElement(By.linkText("Gmail")).click();
linkText.click();
}
}
public class GoogleTest {
@BeforeTest
protected void setUp() throws MalformedURLException {
BasePage.setUp();
}
@Test
public void GoogleHome() throws InterruptedException {
new GoogleHomePage(getDriver());
}
}
Большое спасибо за подсказку я пытался разобрать но что-то не получается у мене правильно объявить Page Factory чтобы можно было обращаться к нему с другого класса. Можете пожалуйста привести пример на моем коде как это реализовать. Заранее спасибо
Предлагали добавить это в КОНСТРУКТОР BasePage, а Вы куда добавили?! В статический метод getDriver. А Вас не смущает наличие “this” в статическом методе?!
Далее в конструкторе GoogleHomePagе Вы пытаетесь кликнуть на ссылку. Обычно в конструкторах такое не делают.
Не до конца уверен, но TestNG вроде требует, чтобы методы с аннотацией @BeforeTest были public.
Мы могли бы написать Вам работающий код, но ведь цель “не дать рыбу, а научить её ловить”
Как у Вас с программированием? Если не очень, то подтяните сначала программирование, чтобы потом легче было с автоматизацией