View Javadoc

1   package com.atlassian.webdriver.confluence.page;
2   
3   import com.atlassian.pageobjects.Page;
4   import com.atlassian.pageobjects.page.HomePage;
5   import com.atlassian.pageobjects.page.LoginPage;
6   import org.openqa.selenium.WebElement;
7   import org.openqa.selenium.support.FindBy;
8   
9   // TODO: Add the currently logged in logic.
10  
11  /**
12   * Page object implementation for the LoginPage in Confluence.
13   */
14  public class ConfluenceLoginPage extends ConfluenceAbstractPage implements LoginPage
15  {
16      public static final String URI = "/login.action";
17  
18      @FindBy (id = "os_username")
19      private WebElement usernameField;
20  
21      @FindBy (id = "os_password")
22      private WebElement passwordField;
23  
24      @FindBy (id = "os_cookie")
25      private WebElement rememberMeTickBox;
26  
27      @FindBy (name = "loginform")
28      private WebElement loginForm;
29  
30      public String getUrl()
31      {
32          return URI;
33      }
34  
35      public <M extends Page> M login(String username, String password, Class<M> nextPage)
36      {
37          return login(username, password, false, nextPage);
38      }
39  
40      public <M extends Page> M loginAsSysAdmin(Class<M> nextPage)
41      {
42          return login("admin", "admin", nextPage);
43      }
44  
45      public <M extends Page> M login(String username, String password, boolean rememberMe, Class<M> nextPage)
46      {
47          usernameField.sendKeys(username);
48          passwordField.sendKeys(password);
49  
50          if (rememberMe)
51          {
52              rememberMeTickBox.click();
53          }      
54  
55          loginForm.submit();
56  
57          return HomePage.class.isAssignableFrom(nextPage) ? pageBinder.bind(nextPage) : pageBinder.navigateToAndBind(nextPage);
58      }
59  
60  }