New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Mouse Over goes in error with Marionette webdriver #2285

Closed
VitoAlbano opened this Issue Jun 14, 2016 · 17 comments

Comments

Projects
None yet
9 participants
@VitoAlbano

VitoAlbano commented Jun 14, 2016

Meta -

OS: OSX 10.11.5
Selenium Version:
2.53.5
Browser:
Firefox

Browser Version:
47

Expected Behavior -

Creating a test with RobotFramework and Selenium2Library i'm using the keyword "Mouse Over" to emulate the mouse, so the page should react.

Actual Behavior -

When the Mouse Over Keyword is called i got this error : WebDriverException: Message: POST /session/5ffe9453-d8cc-6345-bdf1-fa4faef431f3/moveto did not match a known command.
On Chrome everything is working fine

Steps to reproduce -

##Marionette capabilities is added in an init keyword##

*RoboFramework test *
Open browser firefox https://www.google.co.uk/
Mouse Over id=lst-ib

Do you have any idea ? is this related to Selenium or i need to open the issue to Firefox/Marionette team?

Thanks

@lukeis

This comment has been minimized.

Show comment
Hide comment
@lukeis

lukeis Jun 14, 2016

Member

This is selenium related... the client bindings shouldn't be calling the "moveto" endpoint, rather the "actions" endpoint, well as soon as we get word from mozilla that they've implemented it in geckodriver.

They are already tracking needing to implement actions, don't know which bug so can't link right now.

Member

lukeis commented Jun 14, 2016

This is selenium related... the client bindings shouldn't be calling the "moveto" endpoint, rather the "actions" endpoint, well as soon as we get word from mozilla that they've implemented it in geckodriver.

They are already tracking needing to implement actions, don't know which bug so can't link right now.

@VitoAlbano

This comment has been minimized.

Show comment
Hide comment
@VitoAlbano

VitoAlbano Jun 16, 2016

Is there any idea of the timing?

VitoAlbano commented Jun 16, 2016

Is there any idea of the timing?

@lukeis

This comment has been minimized.

Show comment
Hide comment
@lukeis

lukeis Jun 16, 2016

Member

"when it's ready" :)

Member

lukeis commented Jun 16, 2016

"when it's ready" :)

@alexmorozov

This comment has been minimized.

Show comment
Hide comment
@alexmorozov

alexmorozov Jun 22, 2016

Just have run into this issue as well. It would be great to have it working again :).

alexmorozov commented Jun 22, 2016

Just have run into this issue as well. It would be great to have it working again :).

@jgraham

This comment has been minimized.

Show comment
Hide comment
@jgraham

jgraham Jun 22, 2016

So the deal is that "actions" is terribly underspecified. I have been trying to fix that, but it's very unclear to me what the semantics are supposed to be (e.g. when you move the mouse, should events be dispatched on all the elements along the pointers' path). Until that is clear it's not going to be possible to make this work the same way across multiple implementations.

In the meantime there is a very experiemental branch supporting some actions using "whatever semantics marionette happens to implement, which are almost certainly not right" at [1], but it also needs a special branch of the API implementation at [2], and none of this will be compatible with the existing selenium client anyway.

I suppose there is not going to be any agreement on what's even supposed to happen here until July at the earliest (although I am not even too confident about that, hopefully I will be proven wrong).

[1] https://github.com/mozilla/geckodriver/tree/actions
[2] https://github.com/jgraham/webdriver-rust/tree/actions

jgraham commented Jun 22, 2016

So the deal is that "actions" is terribly underspecified. I have been trying to fix that, but it's very unclear to me what the semantics are supposed to be (e.g. when you move the mouse, should events be dispatched on all the elements along the pointers' path). Until that is clear it's not going to be possible to make this work the same way across multiple implementations.

In the meantime there is a very experiemental branch supporting some actions using "whatever semantics marionette happens to implement, which are almost certainly not right" at [1], but it also needs a special branch of the API implementation at [2], and none of this will be compatible with the existing selenium client anyway.

I suppose there is not going to be any agreement on what's even supposed to happen here until July at the earliest (although I am not even too confident about that, hopefully I will be proven wrong).

[1] https://github.com/mozilla/geckodriver/tree/actions
[2] https://github.com/jgraham/webdriver-rust/tree/actions

@shs96c

This comment has been minimized.

Show comment
Hide comment
@shs96c

shs96c Jun 26, 2016

Member

@jgraham, perhaps I can shed some light. We are attempting to emulate user input. As such, we should be storing the last known pointer position in the window, and emulating moving the mouse cursor to the new location. This may involve the viewport first. Since we are attempting to emulate a user, a series of intermediate "moving" events should be fired, though it is up to the implementor of the command to determine how many intermediate points, and what path should be followed.

A simple implementation might evenly divide the distance to travel into (arbitrary number) 10 steps, and fire those intermediate move events as required, while moving in a straight line. A smart implementation might emulate moving along a curved path, with many different intermediate events.

It is desirable not to "teleport" the cursor to the new location, since sometimes the required mouse events are being listened to by elements other than the one being moved to. And we're attempting to emulate what a user would do :)

Member

shs96c commented Jun 26, 2016

@jgraham, perhaps I can shed some light. We are attempting to emulate user input. As such, we should be storing the last known pointer position in the window, and emulating moving the mouse cursor to the new location. This may involve the viewport first. Since we are attempting to emulate a user, a series of intermediate "moving" events should be fired, though it is up to the implementor of the command to determine how many intermediate points, and what path should be followed.

A simple implementation might evenly divide the distance to travel into (arbitrary number) 10 steps, and fire those intermediate move events as required, while moving in a straight line. A smart implementation might emulate moving along a curved path, with many different intermediate events.

It is desirable not to "teleport" the cursor to the new location, since sometimes the required mouse events are being listened to by elements other than the one being moved to. And we're attempting to emulate what a user would do :)

@VitoAlbano

This comment has been minimized.

Show comment
Hide comment
@VitoAlbano

VitoAlbano Jun 28, 2016

Trying to use the Safari webdriver i get this error :
WebDriverException: Message: Unknown command: {"id":"9983y6oxcdbo","name":"mouseMoveTo","parameters":{"element":":wdc:1467114441429"}} (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 2 milliseconds
Build info: version: '2.53.0', revision: '35ae25b', time: '2016-03-15 17:00:58'
System info: host: 'MacPro.local', ip: '10.243.50.156', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.11.5', java.version: '1.8.0_60'
Driver info: org.openqa.selenium.safari.SafariDriver
Capabilities [{browserName=safari, takesScreenshot=true, javascriptEnabled=true, version=9.1.1, cssSelectorsEnabled=true, platform=MAC, secureSsl=true}]
Session ID: null
Stacktrace:
at sun.reflect.NativeConstructorAccessorImpl.newInstance0 (NativeConstructorAccessorImpl.java:-2)
at sun.reflect.NativeConstructorAccessorImpl.newInstance (NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance (DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance (Constructor.java:422)
at org.openqa.selenium.remote.ErrorHandler.createThrowable (ErrorHandler.java:206)
at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed (ErrorHandler.java:158)
at org.openqa.selenium.remote.RemoteWebDriver.execute (RemoteWebDriver.java:678)
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.remote.server.handler.interactions.MouseMoveToLocation.call (MouseMoveToLocation.java:59)
at org.openqa.selenium.remote.server.handler.interactions.MouseMoveToLocation.call (MouseMoveToLocation.java:1)
at java.util.concurrent.FutureTask.run (FutureTask.java:266)
at org.openqa.selenium.remote.server.DefaultSession$1.run (DefaultSession.java:176)
at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:617)
at java.lang.Thread.run (Thread.java:745)

is it the same problem as firefox?

VitoAlbano commented Jun 28, 2016

Trying to use the Safari webdriver i get this error :
WebDriverException: Message: Unknown command: {"id":"9983y6oxcdbo","name":"mouseMoveTo","parameters":{"element":":wdc:1467114441429"}} (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 2 milliseconds
Build info: version: '2.53.0', revision: '35ae25b', time: '2016-03-15 17:00:58'
System info: host: 'MacPro.local', ip: '10.243.50.156', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.11.5', java.version: '1.8.0_60'
Driver info: org.openqa.selenium.safari.SafariDriver
Capabilities [{browserName=safari, takesScreenshot=true, javascriptEnabled=true, version=9.1.1, cssSelectorsEnabled=true, platform=MAC, secureSsl=true}]
Session ID: null
Stacktrace:
at sun.reflect.NativeConstructorAccessorImpl.newInstance0 (NativeConstructorAccessorImpl.java:-2)
at sun.reflect.NativeConstructorAccessorImpl.newInstance (NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance (DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance (Constructor.java:422)
at org.openqa.selenium.remote.ErrorHandler.createThrowable (ErrorHandler.java:206)
at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed (ErrorHandler.java:158)
at org.openqa.selenium.remote.RemoteWebDriver.execute (RemoteWebDriver.java:678)
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.remote.server.handler.interactions.MouseMoveToLocation.call (MouseMoveToLocation.java:59)
at org.openqa.selenium.remote.server.handler.interactions.MouseMoveToLocation.call (MouseMoveToLocation.java:1)
at java.util.concurrent.FutureTask.run (FutureTask.java:266)
at org.openqa.selenium.remote.server.DefaultSession$1.run (DefaultSession.java:176)
at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:617)
at java.lang.Thread.run (Thread.java:745)

is it the same problem as firefox?

@michaelpanicci

This comment has been minimized.

Show comment
Hide comment
@michaelpanicci

michaelpanicci Jul 5, 2016

I am having the issue posted directly above by @VitoAlbano in safari, is this issue fixed, @lukeis ?

michaelpanicci commented Jul 5, 2016

I am having the issue posted directly above by @VitoAlbano in safari, is this issue fixed, @lukeis ?

@jimevans

This comment has been minimized.

Show comment
Hide comment
@jimevans

jimevans Jul 5, 2016

Member

@VitoAlbano, @michaelpanicci: The Safari driver not implementing the actions API is a different issue altogether. Discussion of the Safari driver is not appropriate in the context of this issue.

Member

jimevans commented Jul 5, 2016

@VitoAlbano, @michaelpanicci: The Safari driver not implementing the actions API is a different issue altogether. Discussion of the Safari driver is not appropriate in the context of this issue.

@michaelpanicci

This comment has been minimized.

Show comment
Hide comment
@michaelpanicci

michaelpanicci Jul 5, 2016

@jimevans do you know if actions API has been fixed in another issue?

michaelpanicci commented Jul 5, 2016

@jimevans do you know if actions API has been fixed in another issue?

@jimevans

This comment has been minimized.

Show comment
Hide comment
@jimevans

jimevans Jul 5, 2016

Member

@michaelpanicci The Safari driver doesn't implement the actions API. Full stop. Given that Apple is expected to release a Safari driver in the next release of OS X/macOS, I would not expect the Selenium project's Safari driver implementation to be updated to support that API.

Member

jimevans commented Jul 5, 2016

@michaelpanicci The Safari driver doesn't implement the actions API. Full stop. Given that Apple is expected to release a Safari driver in the next release of OS X/macOS, I would not expect the Selenium project's Safari driver implementation to be updated to support that API.

@michaelpanicci

This comment has been minimized.

Show comment
Hide comment
@michaelpanicci

michaelpanicci Jul 5, 2016

Alright thank you!

Sent from my iPhone

On Jul 5, 2016, at 1:35 PM, jimevans <notifications@github.commailto:notifications@github.com> wrote:

@michaelpaniccihttps://github.com/michaelpanicci The Safari driver doesn't implement the actions API. Full stop. Given that Apple is expected to release a Safari driver in the next release of OS X/macOS, I would not expect the Selenium project's Safari driver implementation to be updated to support that API.


You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://github.com//issues/2285#issuecomment-230547103, or mute the threadhttps://github.com/notifications/unsubscribe/ATB80pLvfWSAPv8CVgrmNj9E-oBxpZjNks5qSpW-gaJpZM4I1bsf.

michaelpanicci commented Jul 5, 2016

Alright thank you!

Sent from my iPhone

On Jul 5, 2016, at 1:35 PM, jimevans <notifications@github.commailto:notifications@github.com> wrote:

@michaelpaniccihttps://github.com/michaelpanicci The Safari driver doesn't implement the actions API. Full stop. Given that Apple is expected to release a Safari driver in the next release of OS X/macOS, I would not expect the Selenium project's Safari driver implementation to be updated to support that API.


You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://github.com//issues/2285#issuecomment-230547103, or mute the threadhttps://github.com/notifications/unsubscribe/ATB80pLvfWSAPv8CVgrmNj9E-oBxpZjNks5qSpW-gaJpZM4I1bsf.

@robotgraves

This comment has been minimized.

Show comment
Hide comment
@robotgraves

robotgraves Aug 4, 2016

I am also experiencing this same error in Ubuntu using both the Click and Move to Element actions

robotgraves commented Aug 4, 2016

I am also experiencing this same error in Ubuntu using both the Click and Move to Element actions

@lukeis

This comment has been minimized.

Show comment
Hide comment
@lukeis

lukeis Aug 4, 2016

Member

locking this issue to prevent more 'me too' comments. We will update this issue when a fix is available. To get notification of that, click this 'Subscribe' button to the right ---->

Member

lukeis commented Aug 4, 2016

locking this issue to prevent more 'me too' comments. We will update this issue when a fix is available. To get notification of that, click this 'Subscribe' button to the right ---->

@SeleniumHQ SeleniumHQ locked and limited conversation to collaborators Aug 4, 2016

@lukeis

This comment has been minimized.

Show comment
Hide comment
@lukeis
Member

lukeis commented Aug 4, 2016

@andreastt

This comment has been minimized.

Show comment
Hide comment
@andreastt

andreastt Aug 19, 2016

Member

The tracking bug in geckodriver (the HTTP frontend) is mozilla/geckodriver#159.

Member

andreastt commented Aug 19, 2016

The tracking bug in geckodriver (the HTTP frontend) is mozilla/geckodriver#159.

@jimevans

This comment has been minimized.

Show comment
Hide comment
@jimevans

jimevans Mar 19, 2017

Member

This is now implemented in geckodriver 0.15 and Selenium 3.x

Member

jimevans commented Mar 19, 2017

This is now implemented in geckodriver 0.15 and Selenium 3.x

@jimevans jimevans closed this Mar 19, 2017

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.