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