Reputation: 166
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.
Upvotes: 4
Views: 4511
Reputation: 7631
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();
}
Upvotes: 6
Reputation: 7631
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
});
Upvotes: 1
Reputation: 166
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();
}
Upvotes: 1