I want to click on a specific location of my canvas
element, so I wrote the following Protractor code:
var canvas = element(by.id("canvas"));
var clickCanvas = function(toRight, toBottom) {
browser.actions()
.mouseMove(canvas, -toRight, -toBottom)
.click();
}
toRight
/toBottom
are the numbers of pixels where the click should be made, relative the top left corner of my canvas.
However, the click does not seem to be executed at the given coordinates. I got the snippet from a related question on the Software Quality Assurance & Testing stack exchange.
Can you confirm that this snippet works?
Can you suggest alternatives?
you missed out .perform()
browser.actions().mouseMove(canvas, -toRight, -toBottom).click().perform();
I use this a few times in my tests and confirm this works
In this case, you have missed the
perform()
call:This is one of the common mistakes when writing e2e tests in Protractor/WebDriverJS.
To prevent these errors from happening, there is a
eslint-plugin-protractor
plugin toESLint
that would warn you ifperform()
was no called onbrowser.actions()
chain.I made this work, passing an object representing the coordinate as the second argument of
mouseMove
: