单击页面上的按钮,直到所有内容都被删除

时间:2017-04-28 18:18:37

标签: node.js jasmine webdriver-io

我的场景:在页面上,我有多个按钮。单击按钮后,将重新加载页面而不单击按钮。

我在实施合适的解决方案时遇到了问题。

目前我有这样的事情:

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解决问题的正确方法是什么?

1 个答案:

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

我认为这仅用于培训目的,因为我无法理解为什么单击一系列按钮会触发页面刷新。 :)