Java – a good working example of selenium 2 and webdriver
I've been using selenium 1, but now I want to migrate to selenium 2 / webriver To be honest, I find it a little difficult to start with selenium 2 / webriver In essence, I don't know how to work between page objects Here is my example:
public class LoginPage {
private final WebDriver driver;
public LoginPage(WebDriver driver) {
this.driver = driver;
}
public void loginAs(String username,String password) {
driver.get("http://url_to_my_webapp");
driver.findElement(By.id("username")).sendKeys(username);
driver.findElement(By.id("pwd")).sendKeys(password);
driver.findElement(By.className("button")).submit();
}
public static void main(String[] args){
LoginPage login = new LoginPage(new FirefoxDriver());
login.loginAs("user","pass");
}
}
Now, after the user logs in, redirection to a different page occurs As far as I know, I should now create a new page object representing the current page... In fact, I don't know how? Where can I find some good examples beyond the "Hello world" level? How can I continue this example?
Thank you in advance!
Solution
These websites provide some examples:
Step-by-step selenium tests with page objects, dsl and fun!
http://www.wakaleo.com/blog/selenium-2-web-driver-the-land-where-page-objects-are-king
This page provides some details of using pagefactory to support page objects: http://code.google.com/p/selenium/wiki/PageFactory
You can extend your example to handle page objects by creating a class for each page, for example:
public class MainPage
{
private final WebDriver driver;
public MainPage(WebDriver driver)
{
this.driver = driver;
}
public void doSomething()
{
driver.findElement(By.id("something")).Click;
}
}
And change loginas to return a class representing the page browsed by the browser after login:
public MainPage loginAs(String username,String password)
{
driver.get("http://url_to_my_webapp");
driver.findElement(By.id("username")).sendKeys(username);
driver.findElement(By.id("pwd")).sendKeys(password);
driver.findElement(By.className("button")).submit();
// Add some error checking here for login failure
return new MainPage(driver);
}
