View Javadoc

1   package com.atlassian.webdriver.confluence.component.header;
2   
3   import javax.inject.Inject;
4   
5   import com.atlassian.pageobjects.Page;
6   import com.atlassian.pageobjects.PageBinder;
7   import com.atlassian.pageobjects.component.Header;
8   import com.atlassian.pageobjects.component.WebSudoBanner;
9   import com.atlassian.pageobjects.page.HomePage;
10  import com.atlassian.webdriver.AtlassianWebDriver;
11  import com.atlassian.webdriver.confluence.component.UserDiscoverable;
12  import com.atlassian.webdriver.confluence.component.menu.BrowseMenu;
13  import com.atlassian.webdriver.confluence.component.menu.ConfluenceUserMenu;
14  
15  import org.apache.commons.lang.NotImplementedException;
16  import org.openqa.selenium.By;
17  import org.openqa.selenium.WebElement;
18  import org.openqa.selenium.support.FindBy;
19  
20  /**
21   * @since 2.0
22   */
23  public class ConfluenceHeader implements Header, UserDiscoverable
24  {
25  
26      @Inject
27      AtlassianWebDriver driver;
28  
29      @Inject
30      PageBinder pageBinder;
31  
32      @FindBy(id = "header")
33      WebElement headerElement;
34  
35      private final static By USER_MENU_LOCATOR = By.id("user-menu-link");
36      private final static By ADMIN_MENU_LOCATOR = By.id("administration-link");
37  
38  
39      public boolean isLoggedIn()
40      {
41          return driver.elementExistsAt(USER_MENU_LOCATOR, headerElement);
42      }
43  
44      public <M extends Page> M logout(Class<M> nextPage)
45      {
46          if (isLoggedIn()) {
47              getUserMenu().open().logout();
48          }
49          return HomePage.class.isAssignableFrom(nextPage) ? pageBinder.bind(nextPage) : pageBinder.navigateToAndBind(nextPage);
50      }
51  
52      public WebSudoBanner getWebSudoBanner()
53      {
54          return pageBinder.bind(WebSudoBanner.class);
55      }
56  
57      public boolean isAdmin()
58      {
59          return driver.elementExistsAt(ADMIN_MENU_LOCATOR, headerElement);
60      }
61  
62      public ConfluenceUserMenu getUserMenu()
63      {
64          if (isLoggedIn())
65          {
66              return pageBinder.bind(ConfluenceUserMenu.class);
67          }
68          else
69          {
70              throw new RuntimeException("Tried to get the user menu but the user is not logged in.");
71          }
72      }
73  
74      public BrowseMenu getBrowseMenu()
75      {
76          return pageBinder.bind(BrowseMenu.class);
77      }
78  }