View Javadoc

1   package com.atlassian.webdriver.confluence.component.header;
2   
3   import com.atlassian.pageobjects.Page;
4   import com.atlassian.pageobjects.PageBinder;
5   import com.atlassian.pageobjects.component.WebSudoBanner;
6   import com.atlassian.pageobjects.page.HomePage;
7   import com.atlassian.webdriver.AtlassianWebDriver;
8   import com.atlassian.webdriver.utils.Check;
9   import com.google.common.base.Preconditions;
10  import org.openqa.selenium.By;
11  
12  import javax.inject.Inject;
13  
14  /**
15   * @since 2.1.0
16   */
17  public class ConfluenceWebSudoBanner implements WebSudoBanner
18  {
19      private static final By WEBSUDO_LOCATOR = By.id("confluence-message-websudo-message");
20  
21      @Inject
22      AtlassianWebDriver driver;
23  
24      @Inject
25      PageBinder pageBinder;
26  
27      public boolean isShowing()
28      {
29          return Check.elementExists(WEBSUDO_LOCATOR, driver) &&
30                  Check.elementIsVisible(WEBSUDO_LOCATOR, driver);
31      }
32  
33      public String getMessage()
34      {
35          return isShowing() ? driver.findElement(WEBSUDO_LOCATOR).getText() : null;
36      }
37  
38      public <M extends Page> M dropWebSudo(final Class<M> nextPage)
39      {
40          Preconditions.checkNotNull("nextPage can not be null.", nextPage);
41  
42          if (isShowing())
43          {
44              driver.findElement(By.id("websudo-drop")).click();
45              driver.waitUntilElementIsNotVisible(WEBSUDO_LOCATOR);
46              return HomePage.class.isAssignableFrom(nextPage) ?
47                      pageBinder.bind(nextPage) : pageBinder.navigateToAndBind(nextPage);
48          }
49          else
50          {
51              return pageBinder.navigateToAndBind(nextPage);
52          }
53  
54      }
55  }