Skip to content

Commit 84ef203

Browse files
committed
Adding new Interactive interface to EventFiringWebDriver. Fixes #4589
1 parent 66ba89a commit 84ef203

File tree

1 file changed

+27
-1
lines changed

1 file changed

+27
-1
lines changed

java/client/src/org/openqa/selenium/support/events/EventFiringWebDriver.java

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,10 @@
3232
import org.openqa.selenium.WebElement;
3333
import org.openqa.selenium.interactions.HasInputDevices;
3434
import org.openqa.selenium.interactions.HasTouchScreen;
35+
import org.openqa.selenium.interactions.Interactive;
3536
import org.openqa.selenium.interactions.Keyboard;
3637
import org.openqa.selenium.interactions.Mouse;
38+
import org.openqa.selenium.interactions.Sequence;
3739
import org.openqa.selenium.interactions.TouchScreen;
3840
import org.openqa.selenium.interactions.internal.Coordinates;
3941
import org.openqa.selenium.interactions.internal.Locatable;
@@ -52,6 +54,7 @@
5254
import java.net.URL;
5355
import java.util.ArrayList;
5456
import java.util.Arrays;
57+
import java.util.Collection;
5558
import java.util.HashMap;
5659
import java.util.HashSet;
5760
import java.util.List;
@@ -65,7 +68,8 @@
6568
* {@link WebDriverEventListener}, e.g. for logging purposes.
6669
*/
6770
public class EventFiringWebDriver implements WebDriver, JavascriptExecutor, TakesScreenshot,
68-
WrapsDriver, HasInputDevices, HasTouchScreen {
71+
WrapsDriver, HasInputDevices, HasTouchScreen,
72+
Interactive {
6973

7074
private final WebDriver driver;
7175

@@ -332,6 +336,28 @@ public TouchScreen getTouch() {
332336
+ " user interactions yet.");
333337
}
334338

339+
@Override
340+
public void perform(Collection<Sequence> actions) {
341+
if (driver instanceof Interactive) {
342+
((Interactive) driver).perform(actions);
343+
return;
344+
}
345+
throw new UnsupportedOperationException("Underlying driver does not implement advanced"
346+
+ " user interactions yet.");
347+
348+
}
349+
350+
@Override
351+
public void resetInputState() {
352+
if (driver instanceof Interactive) {
353+
((Interactive) driver).resetInputState();
354+
return;
355+
}
356+
throw new UnsupportedOperationException("Underlying driver does not implement advanced"
357+
+ " user interactions yet.");
358+
359+
}
360+
335361
private class EventFiringWebElement implements WebElement, WrapsElement, WrapsDriver, Locatable {
336362

337363
private final WebElement element;

0 commit comments

Comments
 (0)