From ed4a52738fd47bd74b5062f14537801ca629de16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sergio=20Sacrist=C3=A1n?= Date: Wed, 21 Oct 2015 19:03:13 +0200 Subject: [PATCH] EventFiringWebDriver: added an event on "submit()" When "recording" the interaction with a page, there's the need to record the "submit" action. For us, this is similar to a "click()", so then we decided to dispatch the "click" event, but maybe a new "submit" event could be dispatched... --- .../support/events/EventFiringWebDriver.java | 2 ++ .../events/EventFiringWebDriverTest.java | 34 +++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/java/client/src/org/openqa/selenium/support/events/EventFiringWebDriver.java b/java/client/src/org/openqa/selenium/support/events/EventFiringWebDriver.java index 2e26cf48ae8f7..f051c6470f95b 100644 --- a/java/client/src/org/openqa/selenium/support/events/EventFiringWebDriver.java +++ b/java/client/src/org/openqa/selenium/support/events/EventFiringWebDriver.java @@ -349,7 +349,9 @@ public void click() { } public void submit() { + dispatcher.beforeClickOn(element, driver); element.submit(); + dispatcher.afterClickOn(element, driver); } public void sendKeys(CharSequence... keysToSend) { diff --git a/java/client/test/org/openqa/selenium/support/events/EventFiringWebDriverTest.java b/java/client/test/org/openqa/selenium/support/events/EventFiringWebDriverTest.java index 300e7aba5aa03..848ebcded2841 100644 --- a/java/client/test/org/openqa/selenium/support/events/EventFiringWebDriverTest.java +++ b/java/client/test/org/openqa/selenium/support/events/EventFiringWebDriverTest.java @@ -151,6 +151,40 @@ public void afterClickOn(WebElement element, WebDriver driver) { order.verifyNoMoreInteractions(); } + @Test + public void submitEvent() { + final WebDriver mockedDriver = mock(WebDriver.class); + final WebElement mockedElement = mock(WebElement.class); + final StringBuilder log = new StringBuilder(); + + when(mockedDriver.findElement(By.name("foo"))).thenReturn(mockedElement); + + EventFiringWebDriver testedDriver = + new EventFiringWebDriver(mockedDriver).register(new AbstractWebDriverEventListener() { + @Override + public void beforeClickOn(WebElement element, WebDriver driver) { + log.append("beforeClickOn\n"); + } + + @Override + public void afterClickOn(WebElement element, WebDriver driver) { + log.append("afterClickOn\n"); + } + }); + + testedDriver.findElement(By.name("foo")).submit(); + + assertEquals( + "beforeClickOn\n" + + "afterClickOn\n", + log.toString()); + + InOrder order = Mockito.inOrder(mockedDriver, mockedElement); + order.verify(mockedDriver).findElement(By.name("foo")); + order.verify(mockedElement).submit(); + order.verifyNoMoreInteractions(); + } + @Test public void changeValueEvent() { final WebDriver mockedDriver = mock(WebDriver.class);