Класс страницы с использованием 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();

   }
}
  1. Зачем создавать частный экземпляр WebDriver? Это появляется с желтой линией для меня.
  2. Когда использовать how = HOW и когда мы можем сразу использовать xpath= //id..?
  3. В конструктор мы снова попадаем WebDriver параметры?

1 ответ

Решение
  1. Желтая линия объясняется тем, что вы используете не переменную драйвера, объявленную вместе с классом, а ту, которую вы передаете в качестве переменной конструктору. Попробуйте использовать:

    this.driver.get(PAGE_URL); //Initialise Elements PageFactory.initElements(this.driver, this);

  2. Ты можешь использовать xpath = "//div" сразу, когда вы не используете how.LINK_TEXT, так как вы также должны предоставить текст для поиска ссылки, если вы хотите найти элемент через LINK_TEXT.

  3. В конструкторе вы передаете экземпляр драйвера, поэтому при создании объекта страницы он имеет экземпляр драйвера, поскольку это не страница, создающая экземпляр драйвера.

Другие вопросы по тегам