Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
Mouse Over goes in error with Marionette webdriver #2285
OS: OSX 10.11.5
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.
Steps to reproduce -
##Marionette capabilities is added in an init keyword##
*RoboFramework test *
Do you have any idea ? is this related to Selenium or i need to open the issue to Firefox/Marionette team?
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.
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 , but it also needs a special branch of the API implementation at , 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).
This was referenced
Jun 25, 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 :)
Trying to use the Safari webdriver i get this error :
is it the same problem as firefox?
@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.
Alright thank you!
Sent from my iPhone
@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.
tracking bug at mozilla: