View Javadoc

1   package com.atlassian.pageobjects.elements.test;
2   
3   import com.atlassian.pageobjects.browser.Browser;
4   import com.atlassian.pageobjects.browser.IgnoreBrowser;
5   import com.atlassian.pageobjects.browser.RequireBrowser;
6   import com.atlassian.pageobjects.elements.GlobalElementFinder;
7   import com.atlassian.pageobjects.elements.PageElement;
8   import com.atlassian.pageobjects.elements.PageElementFinder;
9   import com.atlassian.pageobjects.elements.test.pageobjects.page.EventsPage;
10  import org.junit.Before;
11  import org.junit.Ignore;
12  import org.junit.Test;
13  import org.openqa.selenium.By;
14  import org.openqa.selenium.WebDriverException;
15  
16  import static com.atlassian.pageobjects.elements.DataAttributeFinder.query;
17  import static com.atlassian.pageobjects.elements.query.Poller.waitUntilTrue;
18  import static org.junit.Assert.fail;
19  
20  /**
21   * Test {@link com.atlassian.pageobjects.elements.PageElementJavascript} events API.
22   *
23   * @since 2.1
24   */
25  @IgnoreBrowser(Browser.HTMLUNIT_NOJS)
26  public class TestPageElementJavaScriptEvents extends AbstractPageElementBrowserTest
27  {
28  
29      private PageElementFinder elementFinder;
30  
31      @Before
32      public void init()
33      {
34          product.visit(EventsPage.class);
35          elementFinder = product.getPageBinder().bind(GlobalElementFinder.class);
36      }
37  
38  
39      @Test
40      public void testMouseEvents()
41      {
42          final PageElement mouseEventListener = elementFinder.find(By.id("mouse-event-listener"));
43          mouseEventListener.javascript().mouse().click();
44          waitUntilTrue(query(mouseEventListener).timed().hasDataAttribute("event", "click"));
45          mouseEventListener.javascript().mouse().doubleClick();
46          waitUntilTrue(query(mouseEventListener).timed().hasDataAttribute("event", "dblclick"));
47          mouseEventListener.javascript().mouse().mousedown();
48          waitUntilTrue(query(mouseEventListener).timed().hasDataAttribute("event", "mousedown"));
49          mouseEventListener.javascript().mouse().mouseup();
50          waitUntilTrue(query(mouseEventListener).timed().hasDataAttribute("event", "mouseup"));
51          mouseEventListener.javascript().mouse().mouseover();
52          waitUntilTrue(query(mouseEventListener).timed().hasDataAttribute("event", "mouseover"));
53          mouseEventListener.javascript().mouse().mousemove();
54          waitUntilTrue(query(mouseEventListener).timed().hasDataAttribute("event", "mousemove"));
55          mouseEventListener.javascript().mouse().mouseout();
56          waitUntilTrue(query(mouseEventListener).timed().hasDataAttribute("event", "mouseout"));
57      }
58  
59      @Test
60      @IgnoreBrowser(value = {Browser.HTMLUNIT}, reason = "SELENIUM-167 :focus selector not supported in HTML Unit")
61      public void testFormEvents()
62      {
63          final PageElement formEventListener = elementFinder.find(By.id("form-event-listener"));
64          formEventListener.javascript().form().select();
65          waitUntilTrue(query(formEventListener).timed().hasDataAttribute("event", "select"));
66          formEventListener.javascript().form().focus();
67          waitUntilTrue(query(formEventListener).timed().hasDataAttribute("event", "focus"));
68          formEventListener.javascript().form().blur();
69          waitUntilTrue(query(formEventListener).timed().hasDataAttribute("event", "blur"));
70          formEventListener.javascript().form().change();
71          waitUntilTrue(query(formEventListener).timed().hasDataAttribute("event", "change"));
72          formEventListener.javascript().form().submit();
73          waitUntilTrue(query(formEventListener).timed().hasDataAttribute("event", "submit"));
74      }
75  
76      @Test(expected = WebDriverException.class)
77      @Ignore("This seems to be working in IE")
78      @RequireBrowser(Browser.IE)
79      public void testFormEventsNotWorkingInIe()
80      {
81          testFormEvents();
82          fail("JS select form event now works in IE");
83      }
84  
85  }