【问题标题】:Click buttons on page until all will be removed单击页面上的按钮,直到全部删除
【发布时间】:2017-04-28 18:18:37
【问题描述】:

我的场景:在一个页面上,我有多个按钮。单击按钮后,页面会在没有单击按钮的情况下重新加载。

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

目前我有这样的事情:

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

【问题讨论】:

    标签: node.js jasmine webdriver-io


    【解决方案1】:

    您还可以在运行代码后从控制台提供错误回溯吗? 我想您正面临着臭名昭著的 “Stale element reference...” 错误。

    首先,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);
    });
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-13
      • 1970-01-01
      • 1970-01-01
      • 2021-12-25
      • 2014-09-10
      • 2022-11-23
      • 1970-01-01
      • 2019-04-15
      相关资源
      最近更新 更多