View Javadoc

1   package com.atlassian.webdriver.jira.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   import org.openqa.selenium.support.How;
9   
10  /**
11   * Page object implementation for the LoginPage in JIRA.
12   */
13  public class JiraLoginPage extends JiraAbstractPage implements LoginPage
14  {
15      private static final String URI = "/login.jsp";
16  
17      @FindBy (name = "os_username")
18      private WebElement usernameField;
19  
20      @FindBy (name = "os_password")
21      private WebElement passwordField;
22  
23      @FindBy (name = "os_cookie")
24      private WebElement rememberMeTickBox;
25  
26      @FindBy (how = How.ID_OR_NAME, using = "login")
27      private WebElement loginButton;
28  
29      public String getUrl()
30      {
31          return URI;
32      }
33  
34      public <M extends Page> M login(String username, String password, Class<M> nextPage)
35      {
36          return login(username, password, false, nextPage);
37      }
38  
39      public <M extends Page> M loginAsSysAdmin(Class<M> nextPage)
40      {
41          return login("admin", "admin", nextPage);
42      }
43  
44      public <M extends Page> M login(String username, String password, boolean rememberMe, Class<M> nextPage)
45      {
46          usernameField.sendKeys(username);
47          passwordField.sendKeys(password);
48  
49          if (rememberMe)
50          {
51              rememberMeTickBox.click();
52          }
53  
54          loginButton.click();
55  
56          return HomePage.class.isAssignableFrom(nextPage) ? pageBinder.bind(nextPage) : pageBinder.navigateToAndBind(nextPage);
57      }
58  
59  
60  }