lamyarus
lamyarus

Reputation: 166

Right Click with Nightwatch

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

Answers (3)

Nicolas Pennec
Nicolas Pennec

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

Nicolas Pennec
Nicolas Pennec

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'));

(cf. Trigger right click using pure Javascript)

And check your target webpage :

   $('#menu').on('contextmenu', function () {
      alert('context menu');
      //return false;     // cancel default menu
   });

Upvotes: 1

lamyarus
lamyarus

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

Related Questions