点击量角器中元素的给定坐标

时间:2015-02-14 21:39:53

标签: javascript protractor mousemove angularjs-e2e

我想点击canvas元素的特定位置,因此我编写了以下Protractor代码:

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

var clickCanvas = function(toRight, toBottom) { 
  browser.actions()
    .mouseMove(canvas, -toRight, -toBottom)
    .click();
}

toRight / toBottom是相对于画布左上角应点击的像素数。

但是,似乎没有在给定坐标处执行点击。我从软件质量保证和软件质量保证的related question获得了摘录。测试堆栈交换。

您能确认此代码段有效吗? 你能建议替代方案吗?

3 个答案:

答案 0 :(得分:20)

我完成了这项工作,将表示坐标的对象作为mouseMove的第二个参数传递:

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

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

答案 1 :(得分:3)

你错过了.perform()

browser.actions().mouseMove(canvas, -toRight, -toBottom).click().perform();

我在测试中使用了几次并确认其有效

答案 2 :(得分:2)

在这种情况下,您错过了perform()来电:

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

这是在Protractor / WebDriverJS中编写e2e测试时常见的错误之一。

为了防止这些错误发生,Django Admin Documentation eslint-plugin-protractor插件ESLint would warn you如果perform()链上没有调用browser.actions()那么{/ 3}}。