Node.js 在webdriverio中执行异步函数

Node.js 在webdriverio中执行异步函数,node.js,selenium-webdriver,webdriver-io,node-async,Node.js,Selenium Webdriver,Webdriver Io,Node Async,我一直在解决这个问题,因为我是webdriverio的新手。我的要求是我有一个页面,其中包含项目列表(如按钮等),我需要逐个单击每个项目。但单击每个项目后,它将重定向到另一个部分/页面。还有一个“关闭按钮”返回到第一页(包含项目列表) 我的实际需求是webdriverclient必须单击按钮,它将进入受尊重的页面,然后单击“关闭按钮”并返回,然后单击第一个按钮,它将继续,直到所有按钮完成。(我在这里使用了“异步”模块) 代码在这里 var webdriverio = require('webdr

我一直在解决这个问题,因为我是webdriverio的新手。我的要求是我有一个页面,其中包含项目列表(如按钮等),我需要逐个单击每个项目。但单击每个项目后,它将重定向到另一个部分/页面。还有一个“关闭按钮”返回到第一页(包含项目列表)

我的实际需求是webdriverclient必须单击按钮,它将进入受尊重的页面,然后单击“关闭按钮”并返回,然后单击第一个按钮,它将继续,直到所有按钮完成。(我在这里使用了“异步”模块)

代码在这里

var webdriverio = require('webdriverio');
var async = require("async");
var options = {
    desiredCapabilities: {
        browserName: 'chrome'
    }
};
var client = webdriverio.remote(options);
client
    .init()
    .url('pagelink')
    .elements('li', function (err, res) {
        if (err) {
            console.log(err);
        } else {
            var i = res.value.length;
            async.each(res.value, function (oneResult, callback) {
                console.log('i value = ' + i);
                client
                    .pause(5000).then(function () {
                        console.log('Waiting for ..... i = ' + i);
                        client
                            .element('li :nth-Child(' + i + ')').click('#button').then(function () {
                                console.log('I do .....' + i);
                                client
                                    .pause(3000).then(function (time) {
                                        console.log('Waiting for 3 sec....');
                                        client
                                            .click('.closeBtn').then(function (err, res) {
                                                console.log('Coming Back');
                                            });
                                    });
                            });
                    });
                i--;
            }, function (err) {
                if (err) {
                    console.log('A processing failed to process. ' + err);
                } else {
                    console.log('All results have been processed successfully');
                }
            });
        }
    })
    .end();

我对WebDrivero比较陌生(一个月),我尝试过你所做的,但发现WebDrivero的范例应该更像

client
    .click('li :nth-Child(' + i + ')')
    .waitForExist('.closeBtn')
    .click('.closeBtn')
    .waitForExist('.uniq_to_first_page');

我也面临着类似的情况。使用函数调用迭代返回的元素。这将提供对流程的控制,因此您可以在打开多封邮件时自由切换。