页 Class 使用 PageFactory

Page Class using 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. 黄线是因为您没有使用用 class 声明的驱动程序变量,而是您作为变量传递给构造函数的变量。尝试使用 :

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

  2. 您可以在不使用 how.LINK_TEXT 时直接使用 xpath = "//div",因为您还必须提供用于搜索 link 的文本(如果您愿意)通过 LINK_TEXT.

  3. 定位一个元素
  4. 在构造函数中,您正在传递驱动程序实例,因此在创建页面对象时,它有一个驱动程序实例,因为它不是实例化驱动程序的页面。