下面列出了怎么用org.openqa.selenium.support.PageFactory的API类实例代码及写法,或者点击链接到github查看源代码。
@Test
@Order(1) // this test runs first as it logs the user in !
void loginPage() {
driver.get(testUrl());
driver.manage().window().setSize(new Dimension(1280,800));
var page = new LoginPage(driver);
PageFactory.initElements(new AjaxElementLocatorFactory(driver, 10), page);
percy.snapshot("Login Page");
page.login("admin", "admin123");
}
@Test
void dashboardPage_showsModuleCount() {
driver.get(testUrl()+"/dashboard");
var page = new DashboardPage(driver);
PageFactory.initElements(new AjaxElementLocatorFactory(driver, 10), page);
page.waitForPageLoaded();
assertEquals(3, page.modulesCount());
assertEquals(1, page.stacksCount());
assertEquals(0, page.stacksToUpdateCount());
percy.snapshot("Dashboard");
}
@Test
void modulesPage_showsModules() {
driver.get(testUrl()+"/modules");
var page = new ModulesPage(driver);
PageFactory.initElements(new AjaxElementLocatorFactory(driver, 10), page);
page.waitForPageLoaded();
assertEquals(3, page.modulesCount());
percy.snapshot("Modules");
}
@Test
void modulePage_showsModuleDetails() {
driver.get(testUrl()+"/modules/e01f9925-a559-45a2-8a55-f93dc434c676");
var page = new ModulePage(driver);
PageFactory.initElements(new AjaxElementLocatorFactory(driver, 10), page);
assertThat(page.moduleName()).isEqualTo("terraform-docker-mongo");
assertThat(page.moduleDescription()).contains("A sample terraform");
assertThat(page.terraformImageTag()).isEqualTo("0.11.14");
percy.snapshot("Module Details");
}
@Test
void stackPage_showsStackDetails() {
driver.get(testUrl()+"/stacks/de28a01f-257a-448d-8e1b-00e4e3a41db2/edit");
var page = new StackPage(driver);
PageFactory.initElements(new AjaxElementLocatorFactory(driver, 10), page);
assertThat(page.stackName()).isEqualTo("local-mongo");
percy.snapshot("Stack Details");
}
@Test
void jobPage_showsJobDetails() {
driver.get(testUrl()+"/stacks/de28a01f-257a-448d-8e1b-00e4e3a41db2/jobs/5e856dc7-6bed-465f-abf1-02980206ab2a");
var page = new JobPage(driver);
PageFactory.initElements(new AjaxElementLocatorFactory(driver, 10), page);
assertThat(page.jobDetailTitle()).isEqualTo("Job 5e856dc7-6bed-465f-abf1-02980206ab2a");
percy.snapshot("Job Details");
}
public HomePagePageFactory(WebDriver driver) {
this.driver = driver;
this.driverWait = new WebDriverWait(driver, ScriptBase.DEFAULT_WEB_DRIVER_WAIT);
this.driverJSExecutor = (JavascriptExecutor) driver;
PageFactory.initElements(driver, this);
}
public LoginPagePageFactory(WebDriver driver) {
this.driver = driver;
this.driverWait = new WebDriverWait(driver, ScriptBase.DEFAULT_WEB_DRIVER_WAIT);
this.driverJSExecutor = (JavascriptExecutor) driver;
PageFactory.initElements(driver, this);
}
public CartPagePageFactory(WebDriver driver) {
this.driver = driver;
this.driverWait = new WebDriverWait(driver, ScriptBase.DEFAULT_WEB_DRIVER_WAIT);
this.driverJSExecutor = (JavascriptExecutor) driver;
PageFactory.initElements(driver, this);
}
private void test(String pageName, Function<GooglePage, WebElement> elementGetter) {
driver.get("http://www.google.com/");
GooglePage page = PageFactory.initElements(driver, GooglePage.class);
WebElement inputElement = elementGetter.apply(page);
// annotation-driven element is lazy, need to do something with it
inputElement.sendKeys("search");
PageAwareBy locator = PageAwareBy.by(pageName, By.name("q"));
Scored<By> newLocation = driver.getCurrentEngine().findNewLocations(locator, driver.getPageSource()).get(0);
Assertions.assertEquals(inputElement, driver.findElement(newLocation.getValue()));
}
@Test
public void navigate() {
driver.get("http://localhost:8080/p1.php");
Page1 pg1 = PageFactory.initElements(driver, Page1.class);
Assert.assertEquals(pg1.title(), "Page 1");
By id = By.id("p2-link");
WebElement element = this.driver.findElement(id);
Assert.assertEquals(element.getText(), "Go To Page 2");
element.click();
Page2 pg2 = PageFactory.initElements(driver, Page2.class);
WebElement message = pg2.message();
Assert.assertEquals(message.getText(), "Welcome!");
}
public void editAPost(String presentTitle, String newTitle,
String description) {
goToParticularPostPage(presentTitle);
EditPostPage editPost = PageFactory.initElements(driver,
EditPostPage.class);
editPost.editPost(newTitle, description);
}
@Test
public void testAddNewPost() {
AdminLoginPage loginPage =
PageFactory.initElements(driver, AdminLoginPage.class);
AllPostsPage allPostsPage = loginPage.login(username, password);
allPostsPage.createANewPost("Creating New Post using PageObjects",
"Its good to use PageObjects");
}
@Test
public void testEditPost() {
AdminLoginPage loginPage =
PageFactory.initElements(driver, AdminLoginPage.class);
AllPostsPage allPostsPage = loginPage.login(username, password);
allPostsPage.editAPost("Creating New Post using PageObjects",
"Editing Post using PageObjects", "Test framework low maintenance");
}
@Test (dependsOnMethods = "testEditPost")
public void testDeletePost() {
AdminLoginPage loginPage =
PageFactory.initElements(driver, AdminLoginPage.class);
AllPostsPage allPostsPage = loginPage.login(username, password);
allPostsPage.deleteAPost("Editing Post using PageObjects");
}
@Test
public void testCountPost() {
AdminLoginPage loginPage =
PageFactory.initElements(driver, AdminLoginPage.class);
AllPostsPage allPostsPage = loginPage.login(username, password);
Assert.assertEquals(allPostsPage.getAllPostsCount(), 1);
}
protected AbstractPageObject() {
Configuration configuration = ConfigurationManager.getConfiguration();
int timeout = Integer.parseInt(configuration.timeout());
PageFactory.initElements(new AjaxElementLocatorFactory(DriverManager.getDriver(), timeout), this);
}
public void createANewPost(String title, String description) {
addNewPost.click();
AddNewPostPage newPost = PageFactory.initElements(driver,
AddNewPostPage.class);
newPost.addNewPost(title, description);
}
public void deleteAPost(String title) {
goToParticularPostPage(title);
DeletePostPage deletePost =
PageFactory.initElements(driver, DeletePostPage.class);
deletePost.delete();
}
public BaseScreen() {
PageFactory.initElements(new AppiumFieldDecorator(DriverFactoryManager.getDriver()), this);
}
public AdminLoginPageUsingLoadableComponent(WebDriver driver) {
this.driver = driver;
PageFactory.initElements(driver, this);
}
public AllPostsPage login(String username, String pwd) {
email.sendKeys(username);
password.sendKeys(pwd);
submit.click();
return PageFactory.initElements(driver, AllPostsPage.class);
}
public LoginPage goToLoginPage() {
LoginPage loginPage = new LoginPage();
PageFactory.initElements(driver, loginPage);
driver.get(loginPage.getUrl());
return loginPage;
}
public InventoryPage getInventoryPage() {
InventoryPage inventoryPage = new InventoryPage();
PageFactory.initElements(driver, inventoryPage);
return inventoryPage;
}
public GuineaPigPage(WebDriver driver) {
this.driver = driver;
PageFactory.initElements(driver, this);
}
public IndexPage transfer(double amount) {
this.amount.sendKeys(String.valueOf(amount));
this.submit.click();
return PageFactory.initElements(this.driver, IndexPage.class);
}
public Form(SearchContext context) {
PageFactory.initElements(new DefaultElementLocatorFactory(context), this);
}
public <T> T login(Class<T> page) {
this.button.click();
return PageFactory.initElements(LoginPage.this.driver, page);
}
public IndexPage(WebDriver webDriver) {
this.driver = webDriver;
PageFactory.initElements(webDriver, this);
}
public static <T> T to(WebDriver driver, Class<T> page) {
driver.get("http://localhost:8080/");
return (T) PageFactory.initElements(driver, page);
}