我正在尝试遍历链接列表,并对每个链接执行一些操作。我可以使用 elements 迭代元素,但是在 forEach 中使用 click 不会阻止 forEach 中的下一步,并且 Selenium 发疯了,因为它试图继续对不在 DOM 中的元素执行操作。

var q = require("q");
var webdriverio = require('webdriverio');
var options = {
    desiredCapabilities: {
        browserName: 'chrome'
    }
};

var clicks = [];

var runner = webdriverio.remote(options);

runner
    .init()
    .url('https://www.google.dk/search?q=burrito')
    .elements(".r").then(function(res){
        res.value.forEach(function(elem){
            console.log(elem);
            clicks.push(
                runner
                    .elementIdClick(elem.ELEMENT)
                    .pause(5000)
                    .back()
                    .pause(2000)
            );
        });

        return q.all(clicks);
    });

在 forEach 中执行所有代码之前,如何确保 forEach 中的下一次迭代不会运行?

编辑:我应该提到我已经尝试过 https://github.com/webdriverio/webdriverio/issues/941https://github.com/webdriverio/webdriverio/issues/273 。我用更具体的东西更新了我的代码示例。

最佳答案

var runner = webdriverjs
.remote(options)
.init()
.url("http://www.google.com")

 // fetch elements
.elements('a', function(err, res){
    // iterate through elements
    res.value.forEach(function(elem) {
        // execute specific action
        runner.elementIdClick(elem.Element, function(err, res) {
             // callback logic here
             // ...
        })
    })
})

来自 https://github.com/webdriverio/webdriverio/issues/273

关于node.js - WebdriverIO 中的循环元素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34909472/

10-11 10:32