我想点击canvas
元素的特定位置,因此我编写了以下Protractor代码:
var canvas = element(by.id("canvas"));
var clickCanvas = function(toRight, toBottom) {
browser.actions()
.mouseMove(canvas, -toRight, -toBottom)
.click();
}
toRight
/ toBottom
是相对于画布左上角应点击的像素数。
但是,似乎没有在给定坐标处执行点击。我从软件质量保证和软件质量保证的related question获得了摘录。测试堆栈交换。
您能确认此代码段有效吗? 你能建议替代方案吗?
答案 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}}。