Класс страницы с использованием PageFactory
Я новичок в PageFactory
и ссылки на этот учебник https://www.toptal.com/selenium/test-automation-in-selenium-using-page-object-model-and-page-factory
Пример с этой страницы:
public class HomePage {
private WebDriver driver;
//Page URL
private static String PAGE_URL="https://www.toptal.com";
//Locators
//Apply as Developer Button
@FindBy(how = How.LINK_TEXT, using = "APPLY AS A DEVELOPER")
private WebElement developerApplyButton;
//Constructor
public HomePage(WebDriver driver){
this.driver=driver;
driver.get(PAGE_URL);
//Initialise Elements
PageFactory.initElements(driver, this);
}
public void clickOnDeveloperApplyButton(){
developerApplyButton.click();
}
}
- Зачем создавать частный экземпляр
WebDriver
? Это появляется с желтой линией для меня. - Когда использовать
how = HOW
и когда мы можем сразу использоватьxpath= //id..
? - В конструктор мы снова попадаем
WebDriver
параметры?
1 ответ
Желтая линия объясняется тем, что вы используете не переменную драйвера, объявленную вместе с классом, а ту, которую вы передаете в качестве переменной конструктору. Попробуйте использовать:
this.driver.get(PAGE_URL); //Initialise Elements PageFactory.initElements(this.driver, this);
Ты можешь использовать
xpath = "//div"
сразу, когда вы не используете how.LINK_TEXT, так как вы также должны предоставить текст для поиска ссылки, если вы хотите найти элемент через LINK_TEXT.В конструкторе вы передаете экземпляр драйвера, поэтому при создании объекта страницы он имеет экземпляр драйвера, поскольку это не страница, создающая экземпляр драйвера.