使用PageFactory的页面类

时间:2016-06-10 08:36:04

标签: java selenium factory-pattern pageobjects

我是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 个答案:

答案 0 :(得分:0)

  1. 黄色行是因为您没有使用与类一起声明的驱动程序变量,而是将您作为变量传递给构造函数的变量。尝试使用:

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

  2. 当您不使用how.LINK_TEXT时,您可以立即使用xpath = "//div",因为如果您想通过LINK_TEXT找到元素,还必须提供搜索链接的文本。

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