i'm trying automate prestashop test cases selenium webdriver. doing correct, page object model?
this homepagepom class:
package pageobjects; import org.openqa.selenium.by; import org.openqa.selenium.webdriver; import org.openqa.selenium.webelement; import org.openqa.selenium.alert; public class homepagepom { private static webelement element = null; private static webdriver driver = null; public static string correctlogin = "aaaa"; public static void enterpage(webdriver driver) { driver.get("http://website.com"); } public static webelement homelogo(webdriver driver) { element = driver.findelement(by.id("header_logo")); return element; } public static webelement searchbar(webdriver driver) { element = driver.findelement(by.id("search_query_top")); return element; } public static webelement searchbarbutton(webdriver driver) { element = driver.findelement(by.name("submit_search")); return element; } public static webelement contactus(webdriver driver) { element = driver.findelement(by.id("contact-link")); return element; } public static webelement signin(webdriver driver) { element = driver.findelement(by.classname("header_user_info")); return element; } }
this loginpagepom class:
package pageobjects; import org.openqa.selenium.by; import org.openqa.selenium.webdriver; import org.openqa.selenium.webelement; public class loginpagepom { private static webelement element = null; private static webdriver driver = null; public static string correctlogin = "client"; public static string incorrectlogin = "client_incorrect"; public static string correctpassword = "pass_correct"; public static string incorrectpassword = "pass_incorrect"; public static webelement createaccountfield(webdriver driver) { element = driver.findelement(by.id("email_create")); return element; } public static webelement registeredemailfield(webdriver driver) { element = driver.findelement(by.id("email")); return element; } public static webelement registeredpasswordfield(webdriver driver) { element = driver.findelement(by.id("passwd")); return element; } public static webelement registeredsubmitbutton(webdriver driver) { element = driver.findelement(by.id("submitlogin")); return element; } public static webelement createaccountbutton(webdriver driver) { element = driver.findelement(by.id("submitcreate")); return element; } }
and loginpagecorrectlogin
class, execute 1 single test case - correct login prestashop website:
package testcases; import pageobjects.homepagepom; import pageobjects.loginpagepom; import org.openqa.selenium.by; import org.openqa.selenium.webdriver; import org.openqa.selenium.webelement; import org.openqa.selenium.firefox.firefoxdriver; public class loginpagecorrectlogin { public static webdriver driver = null; public static webelement element = null; public static void main(string[] args) { driver = new firefoxdriver(); homepagepom.enterpage(driver); //enter home site homepagepom.signin(driver).click(); //find sign in option , click loginpagepom.registeredemailfield(driver).sendkeys(loginpagepom.correctlogin); // input correct login field loginpagepom.registeredpasswordfield(driver).sendkeys(loginpagepom.correctpassword); //input correct password field loginpagepom.registeredsubmitbutton(driver).click(); // click on submit button } }
i'm begginer @ selenium, want using best practises. correct? example create other classes loginpagecorrectpassword
, loginpageincorrectlogin
, loginpageincorrectpassword
.
advice page model object helpful.
as open ended question, here general pointers:
- you won't want multiple pages correct password, incorrect password, etc aren't different pages.
- move strings, url , usernames/passwords string-table/resource-file/config-file/something. having them set in code means forced edit code if, instance, password changes; there many other negatives well.
- make general actions page object. simple example:
loginpagepom.login(username, password, isvalidlogin)
way won't have login code repeated everywhere, easier understand, , you'll have change 1 spot if/when login page chan
Comments
Post a Comment