View Javadoc

1   package com.atlassian.webdriver.confluence.component.menu;
2   
3   import com.atlassian.pageobjects.binder.Init;
4   import com.atlassian.webdriver.AtlassianWebDriver;
5   import com.atlassian.webdriver.waiter.Waiter;
6   import com.atlassian.webdriver.utils.Check;
7   import com.atlassian.webdriver.utils.MouseEvents;
8   import org.openqa.selenium.By;
9   import org.openqa.selenium.WebElement;
10  
11  import javax.inject.Inject;
12  
13  /**
14   *
15   */
16  public class AjsDropdownMenu
17  {
18  
19      @Inject
20      protected AtlassianWebDriver driver;
21      protected WebElement menuItem;
22  
23      @Inject
24      Waiter waiter;
25  
26      private final By componentLocator;
27  
28  
29      public AjsDropdownMenu(By componentLocator)
30      {
31          this.componentLocator = componentLocator;
32      }
33  
34      @Init
35      public void initialise()
36      {
37          menuItem = driver.findElement(componentLocator);
38      }
39  
40      public boolean isOpen()
41      {
42          return Check.hasClass("opened", menuItem);
43      }
44  
45      public AjsDropdownMenu open()
46      {
47          if (!isOpen())
48          {
49              MouseEvents.hover(menuItem, driver);
50          }
51  
52          // Wait until the menu has finished loading items
53          waiter.until().element(By.className("ajs-drop-down"), menuItem).isVisible().and()
54              .element(By.cssSelector(".ajs-drop-down.assistive"), menuItem).doesNotExist().execute();
55  
56  
57  
58          return this;
59      }
60  
61      public AjsDropdownMenu close()
62      {
63          if (isOpen())
64          {
65              MouseEvents.mouseout(menuItem.findElement(By.cssSelector("a.ajs-menu-title")), driver);
66          }
67          return this;
68      }
69  
70  }