WebDriverIO browser.Click无法在Chrome中找到元素并在Firefox中正常运行

时间:2017-05-30 21:30:21

标签: javascript selenium selenium-webdriver webdriver-io cucumberjs

我正在使用 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'));
});

couponsWebElements的数组。我想点击查看优惠券详情按钮。

enter image description here

示例页面 http://www.princefrederickdodge.com/coupons.htm

谢谢,
维诺德

3 个答案:

答案 0 :(得分:0)

尝试在代码

之前使用浏览器暂停
browser.pause(2000);

有时会因为铬延迟而发生这种情况。它总是对我有用。

更多:http://webdriver.io/api/utility/pause.html

答案 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'));
});