我正在使用 WebdriverIO 与 CucumberJS 进行测试。
下面的代码在Firefox中运行良好,但我在Chrome中遇到错误,显示element is not clickable
。我正在寻找JavaScript的解决方案。
this.Then('I click on View Coupon Details button on a random coupon', () => {
const randomElement = getRandomIndex(couponsCount);
assert.ok(coupons.value[randomElement].element('.print-coupon').click('a'));
});
coupons
是WebElements
的数组。我想点击查看优惠券详情按钮。
示例页面 http://www.princefrederickdodge.com/coupons.htm
谢谢,
维诺德
答案 0 :(得分:0)
尝试在代码
之前使用浏览器暂停browser.pause(2000);
有时会因为铬延迟而发生这种情况。它总是对我有用。
答案 1 :(得分:0)
在第一种方法中,您可以从检查器复制99%xpath / css选择器,然后.click将始终有效。如果没有2个替代方案
如果您运行脚本localhost并且您可以访问,则可以执行
.execute(function(a, b, c, d) {
$('#button').click();
return a + b + c + d;
}, 1, 2, 3, 4).then(function(ret) {
// node.js context - client and console are available
log(ret.value); // outputs: 10
});
或用这种方式。鼠标将被按下并释放。如果您使用webdriver.io右键单击以了解坐标的位置,则可以找到正确的位置。
.moveToObject('#button', 0, -103)
.buttonDown()
.moveToObject('#button', 0, -104)
.buttonUp()
答案 2 :(得分:0)
不确定是否有更好的方法来执行此操作,我正在使用,getLocation()并滚动到按钮的位置以使其在视口中可见,然后单击它。
this.Then('I click on View Coupon Details button on a random coupon', () => {
const randomElement = getRandomIndex(couponsCount);
const pos = coupons.value[randomElement].getLocation();
browser.scroll(pos.x, pos.y);
browser.pause(200); // we can use waitforVisible .print-coupon as well
assert.ok(coupons.value[randomElement].element('.print-coupon').click('a'));
});