Clicking on given coordinates of element in protractor

ⅰ亾dé卋堺 提交于 2019-12-05 16:10:24

问题


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?


回答1:


I made this work, passing an object representing the coordinate as the second argument of mouseMove:

var canvas = element(by.id("canvas"));

var clickCanvas = function (toRight, toBottom) { 
    browser.actions()
      .mouseMove(canvas, {x: toRight, y: toBottom})
      .click()
      .perform();
};



回答2:


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




回答3:


In this case, you have missed the perform() call:

 browser.actions()
  .mouseMove(canvas, -toRight, -toBottom)
  .click();  // < no .perform() HERE

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 to ESLint that would warn you if perform() was no called on browser.actions() chain.



来源:https://stackoverflow.com/questions/28520623/clicking-on-given-coordinates-of-element-in-protractor

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!