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
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 }