我的场景:在页面上,我有多个按钮。单击按钮后,将重新加载页面而不单击按钮。
我在实施合适的解决方案时遇到了问题。
目前我有这样的事情:
let selector = 'selector for All button on page';
let buttons = browser.$$(selector);
for (int i = 0; i < buttons.length; i++) {
let button = browser.$(selector);
button.moveToObject();
button.waitForVisible();
button.click();
browser.waitToVisible(elementAfterPageRefresh);
}
第一次迭代后出现问题。有时它只能移动到按钮,有时脚本甚至不会点击第二个按钮。
使用webdriverio解决问题的正确方法是什么?
答案 0 :(得分:3)
运行代码后,您还可以从控制台提供错误回溯吗? 我认为你正面临臭名昭着的 &#34;陈旧元素参考......&#34; 错误。
首先, WebdriverIO 驱动程序以及 WebdriverJS 驱动程序(其前身)将始终丢失对先前查询的元素/元素的引用(元素ID)浏览器执行页面重新加载后。
所以根据 Christian Bromman (@ChristianB),你必须做一些事情:
runner
.init()
.url('https://www.google.dk/search?q=burrito')
.getText(".r").then(function(res){ // given `.r` is the <a /> tag on google search page
res.value.forEach(function(elem){
console.log(elem);
clicks.push(
runner
.click('=' + elem.ELEMENT) // use link text selector to query the element again
.pause(5000)
.back()
.pause(2000)
);
});
return q.all(clicks);
});
我认为这仅用于培训目的,因为我无法理解为什么单击一系列按钮会触发页面刷新。 :)