I'm using Selenium 2 with FirefoxDriver. The task is to move an element for a few pixels. I code the task this way:
val action = (new Actions(driver)).clickAndHold(el).moveByOffset(3,1).release().perform()
mouseDown(), mouseMove() and mouseUp() events are logged. So I receive the following output:
mouseDown at 267 133
mouseMove at 270 134
mouseMove at 267 133
mouseUp at 267 133
It looks like that Selenium calls mouseDown on the item, then moves it to the specified position, then moves it back and then calls mouseUp. That's pretty strange.
It turns out that the reason is in release() call, since when I call this:
val action = (new Actions(driver)).clickAndHold(el).moveByOffset(3,1).perform()
I get this:
mouseDown at 267 133
mouseMove at 270 134
How to make Selenium to call mouseUp at the right position?
解决方案
Sounds like a bug... A possible workaround would be:
val action = (new Actions(driver)).dragAndDropToOffset(el, el.Location.X + 3, el.Location.Y + 1).perform()