'Human-like mouse movements via Selenium
The Story:
One of the approaches to solve captchas, like Google ReCaptcha, is to try to imitate the human mouse actions: movements, hovering and clicks.
Some users reported that making mouse moves as B-spline curves worked for them.
The Question:
How to move the mouse to a particular element following the B-spline trajectory via Selenium?
Note that the regular browser.actions().mouseMove(elm).perform(); would "jump" to the element straight and far too quickly. My understanding is that it is a matter of slowing down the movement speed, "jumping" from point to point smoothly following the mathematical model for the B-spline trajectory.
We are using Protractor/JavaScript, but the question is really language-agnostic.Note that I'm not trying to solve the captcha, or contribute to the "captcha-solving making new evil bots violating terms of use here and there" space. I'm just curious and eager to obtain more skills in the test automation space.
Solution 1:[1]
If you were running this from desktop wand wanted to use an actual mouse movement, with AutoIt you can make mouse movements delayed.
Solution 2:[2]
@ODIUM @Guilherme , or anyone still looking for a fix. What ODIUM described in Guilherme's answer as a jump to the first curve position then back to the beginning, then second curve position and back to the beginning again is caused by a small bug in the provided code. It will be fixed by "resetting" the action chain after each perform, like this:
action = ActionChains(driver);
startElement = driver.find_element_by_id('drawer')
# First, go to your start point or Element:
action.move_to_element(startElement);
action.perform();
for mouse_x, mouse_y in zip(x_i, y_i):
# Here you should reset the ActionChain and the 'jump' wont happen:
action = ActionChains(driver)
action.move_by_offset(mouse_x,mouse_y);
action.perform();
print(mouse_x, mouse_y)
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | theboy |
| Solution 2 |
