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

你能否請你添加更多關於你的答案的描述? –

相關問題