I am trying to test my GUI with Nightwatch. I can not seem to find how to simulate a right click. I went through the API Reference page(http://nightwatchjs.org/api) and searched everywhere. Am I missing something here? Because I believe that right clicking should be one of the most basic functionalities.
Asked
Active
Viewed 4,437 times
3 Answers
6
Good news !!!
Since Nightwatch.js v0.6.13, you can fire a real right click :-)
"Right Click to Show ContextMenu" : function (browser) {
browser
.moveToElement('#targetElement')
.mouseButtonClick('right')
.pause(5000)
.end();
}

Nicolas Pennec
- 7,533
- 29
- 43
1
EDIT: This DOESN'T WORK. I am going to leave it here anyways. It might be helpful somehow.
I found a work around. mousebuttonDown() method allows the use of left, middle and right clicks. They are assigned 0,1 and 2 respectively. So the following somehow simulates a rightclick:
"Right Click to Show ContextMenu" : function (browser) {
browser
.moveToElement(/*locate your element here*/)
.mouseButtonDown(2)
.mouseButtonUp(2)
.end();
}

lamyarus
- 166
- 2
- 11
-
I opened a [pull request](https://github.com/beatfactor/nightwatch/pull/425) on github project to fix this issue with the addition of a new function : mouseButtonClick(2) – Nicolas Pennec Apr 21 '15 at 05:49
-
My pull request is accepted and merged ! I just posted a new answer. Test it ;) – Nicolas Pennec May 29 '15 at 09:37
1
I have the same issue with selenium-webdriver ...
But right now i'm using that workaround for Nightwatch.js:
"Right Click to Show ContextMenu" : function (browser) {
// inject script in client
browser.execute(function(selector){
// dispatch "context menu" event
$(selector).trigger('contextmenu');
return true;
}, ['#menu'])
.pause(5000)
.end();
}
(cf. Nightwatch API)
Or in pure JS :
document.querySelector('.logo').dispatchEvent(new CustomEvent('contextmenu'));
And check your target webpage :
$('#menu').on('contextmenu', function () {
alert('context menu');
//return false; // cancel default menu
});

Community
- 1
- 1

Nicolas Pennec
- 7,533
- 29
- 43