页 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();
}
}
- 为什么要创建
WebDriver
的私有实例?对我来说是黄线。
- 什么时候使用
how = HOW
什么时候可以直接使用 xpath= //id..
?
- 在构造函数中,我们再次传递
WebDriver
个参数?
黄线是因为您没有使用用 class 声明的驱动程序变量,而是您作为变量传递给构造函数的变量。尝试使用 :
this.driver.get(PAGE_URL);
//Initialise Elements
PageFactory.initElements(this.driver, this);
您可以在不使用 how.LINK_TEXT 时直接使用 xpath = "//div"
,因为您还必须提供用于搜索 link 的文本(如果您愿意)通过 LINK_TEXT.
定位一个元素
在构造函数中,您正在传递驱动程序实例,因此在创建页面对象时,它有一个驱动程序实例,因为它不是实例化驱动程序的页面。
我是 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
个参数?
黄线是因为您没有使用用 class 声明的驱动程序变量,而是您作为变量传递给构造函数的变量。尝试使用 :
this.driver.get(PAGE_URL); //Initialise Elements PageFactory.initElements(this.driver, this);
您可以在不使用 how.LINK_TEXT 时直接使用
xpath = "//div"
,因为您还必须提供用于搜索 link 的文本(如果您愿意)通过 LINK_TEXT. 定位一个元素
在构造函数中,您正在传递驱动程序实例,因此在创建页面对象时,它有一个驱动程序实例,因为它不是实例化驱动程序的页面。