Skip to content

UnsupportedCommandException: mouseMoveTo error when trying to perform new Actions(WebDriver).moveToElement(WebElement) using EventFiringWebDriver #4589

@doctordrue

Description

@doctordrue

Meta -

OS:
Windows 7, Windows 10
Selenium Version:
Selenium-Java 3.5.2
IeDriverServer x32 3.5.1
GeckoDriver 0.18.0
Browser:
Internet Explorer, Firefox 52.3.0 ESR

Expected Behavior -

moveToElement(WebElement), moveByOffset(int, int) and moveToElement(WebElement, int, int) methods are expected to work without errors as they work when using pure drivers

Actual Behavior -

When running on Firefox(with geckodriver initialization) or IeDriverServer exception throws (however it works fine when running on chrome or Firefox ESR with legacy initialization):

FAILED: moveToElementTest
org.openqa.selenium.UnsupportedCommandException: mouseMoveTo
Build info: version: '3.5.2', revision: '10229a9', time: '2017-08-21T17:29:55.15Z'
System info: host: '-', ip: '192.168.56.1', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_131'
Driver info: driver.version: RemoteWebDriver
	at org.openqa.selenium.remote.http.AbstractHttpCommandCodec.encode(AbstractHttpCommandCodec.java:222)
	at org.openqa.selenium.remote.http.AbstractHttpCommandCodec.encode(AbstractHttpCommandCodec.java:119)
	at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:158)
	at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:82)
	at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:641)
	at org.openqa.selenium.remote.RemoteExecuteMethod.execute(RemoteExecuteMethod.java:35)
	at org.openqa.selenium.remote.RemoteMouse.mouseMove(RemoteMouse.java:89)
	at org.openqa.selenium.support.events.internal.EventFiringMouse.mouseMove(EventFiringMouse.java:58)
	at org.openqa.selenium.interactions.MoveMouseAction.perform(MoveMouseAction.java:43)
	at org.openqa.selenium.interactions.CompositeAction.perform(CompositeAction.java:36)
	at org.openqa.selenium.interactions.Actions$BuiltAction.perform(Actions.java:646)
	at com.epam.java.MouseMoveTest.moveToElementTest(MouseMoveTest.java:78)

Steps to reproduce -

public class MouseMoveTest {
    public WebDriver driver;
    private static final String BROWSER = "ie";

    @BeforeSuite
    public void setupDriver() {
	switch (BROWSER) {
	case "chrome":
	    System.setProperty("webdriver.chrome.driver", "src/main/resources/chromedriver.exe");
	    ChromeOptions options = new ChromeOptions();
	    options.setExperimentalOption("excludeSwitches", Arrays.asList("ignore-certificate-errors"));
	    options.addArguments("--disable-extensions");
	    options.addArguments("disable-infobars");

	    Map<String, Object> prefs = new HashMap<String, Object>();
	    prefs.put("credentials_enable_service", false);
	    prefs.put("profile.password_manager_enabled", false);
	    options.setExperimentalOption("prefs", prefs);
	    driver = new EventFiringWebDriver(new ChromeDriver(options));
	    break;
	case "ie":
	    System.setProperty("webdriver.ie.driver", "src/main/resources/IEDriverServer.exe");
	    DesiredCapabilities ieCapabilities = DesiredCapabilities.internetExplorer();
	    ieCapabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS,
		    false);
	    ieCapabilities.setCapability(InternetExplorerDriver.REQUIRE_WINDOW_FOCUS, true);
	    driver = new EventFiringWebDriver(new InternetExplorerDriver(ieCapabilities));
	    break;
	case "firefox":
		System.setProperty("webdriver.gecko.driver", "src/main/resources/geckodriver.exe");
		FirefoxOptions geckoOptions = new FirefoxOptions()
		        .addPreference("log", "{level: error}")
		        .addCapabilities(new DesiredCapabilities(
		                ImmutableMap.of("pageLoadStrategy", "eager")))
		        .setLogLevel(Level.SEVERE);
	    driver = new EventFiringWebDriver(new FirefoxDriver(geckoOptions));
	    break;
	}
	driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
	// driver.manage().window().maximize();
    }

    @BeforeTest
    public void goToPage() throws InterruptedException {
	driver.get("http://google.com");
    }

    @Test
    public void moveToElementTest() {
	WebElement target = driver.findElement(By.name("q"));
	Actions actions = new Actions(driver).moveToElement(target);
	actions.build().perform();
    }

    @Test
    public void moveByOffsetTest() {
	Actions actions = new Actions(driver).moveByOffset(500, 500);
	actions.build().perform();
    }

    @Test
    public void moveToElementWithOffsetTest() {
	WebElement target = driver.findElement(By.name("q"));
	Actions actions = new Actions(driver).moveToElement(target, 50, 50);
	actions.build().perform();
    }

    @AfterSuite(alwaysRun = true)
    public void closeDriver() {
	driver.quit();
    }

}

Metadata

Metadata

Assignees

No one assigned

    Labels

    C-javaJava Bindings

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions