0

我正在使用WebdriverIOCucumberJS要做测试。 下面的代码在Firefox中正常工作,但在Chrome中出现错误,显示element is not clickable。我正在寻找JavaScript解决方案。WebDriverIO browser.Click在Chrome中找不到元素并在Firefox中运行正常

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

感谢,
维诺德

+0

可同时也增加了你的项目,你正在测试的看法,有时是难以达到嵌套的div – k185

+0

我注意到,有在你的页面一个模式/弹出,而打开该网页。你应该先照顾那个,然后你可以与页面上的项目交互 – k185

+0

我在本地测试它禁用所有的弹出窗口,但仍面临同样的问题。我添加了不带弹出窗口的其他网站。 – vinod

回答

0

尝试

browser.pause(2000); 

有时这HA之前你的代码使用的浏览器暂停由于铬延迟而产生的。总是对我有用。

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

+0

为什么你建议使用browser.pause(),在很多情况下这是不好的做法? Wdio有更合适的方法,例如waitForVisible,waitForEnabled等。 – Andrii

+0

是的,这是一种不好的做法,但你可以尝试一下,看看是否有效。有时我必须像这样使用chrome –

+0

添加browser.pause没有帮助。仍然有相同的错误。“在点(164,635)不可点击'。其他元素将收到点击:' – vinod

0

你可以从检查复制99%的XPath/CSS选择器和。点击总会工作,那么第一种方式。如果不是有2的替代品

如果您运行脚本本地主机,你有机会,你可以做

.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() 
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')); 
}); 
+0

你能否请你添加更多关于你的答案的描述? –

相关问题