【问题标题】:Clicking on given coordinates of element in protractor单击量角器中元素的给定坐标
【发布时间】:2015-02-14 21:39:53
【问题描述】:

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

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

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

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

但是,单击似乎并未在给定坐标处执行。我从 Software Quality Assurance & Testing stack exchange 上的 related question 获得了 sn-p。

你能确认这个 sn-p 有效吗?
您能提出替代方案吗?

【问题讨论】:

标签: javascript protractor mousemove angularjs-e2e


【解决方案1】:

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

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

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

【讨论】:

  • @Olov 作为安慰,你得到了我的支持 ;-) 这仅适用于画布元素或任何元素吗?
  • @Besnik 好吧,它应该适用于任何 ElementFinder(如果您以前没有听说过,请在 Protractor API 参考中查找它),因此任何元素都应该可以正常工作。
【解决方案2】:

你错过了 .perform()

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

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

【讨论】:

    【解决方案3】:

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

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

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

    为了防止这些错误发生,ESLint 有一个 eslint-plugin-protractor 插件,如果 perform() 没有在 browser.actions() 链上调用 would warn you。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-24
      相关资源
      最近更新 更多