Node.js WebdriverIO更新导致browserStack API调用未等待响应

Node.js WebdriverIO更新导致browserStack API调用未等待响应,node.js,selenium-webdriver,webdriver-io,Node.js,Selenium Webdriver,Webdriver Io,我已经使用webdriverIO V5和Browserstack设置了测试。测试成功运行,但是BrowserStack中的测试结果未更新。我在代码中发出的请求调用不会等待它完成 在我的wdio.conf.js中,我有以下代码: afterTest: function (test, context, { error, result, duration, passed, retries }) { let sessionid = browser.sessionId; i

我已经使用webdriverIO V5和Browserstack设置了测试。测试成功运行,但是BrowserStack中的测试结果未更新。我在代码中发出的请求调用不会等待它完成

在我的wdio.conf.js中,我有以下代码:

afterTest: function (test, context, { error, result, duration, passed, retries }) {
        let sessionid = browser.sessionId;
        if (!test.passed) {
            request({
                uri: `https://${this.user}:${this.key}@api.browserstack.com/automate/sessions/${sessionid}.json`,
                method: 'PUT',
                form: { 'status': 'error', 'reason': "" }
            })      
        }
        else {
            request({
                uri: `https://${this.user}:${this.key}@api.browserstack.com/automate/sessions/${sessionid}.json`,
                method: 'PUT',
                form: { 'status': "passed", 'reason': "" }
            })
        }
//browser.pause(3000)
仅当我向浏览器发出提示时,结果才会更新。暂停(3000)。
我怎样才能让它等待到请求完成,而不是每次测试后等待3秒钟

@NaveenThiyagarajan-request()来自节点_模块。上述代码位于wdio.conf.js文件中。我能够让它与异步一起工作。有更好的方法吗?下面是我的代码:

var request = require("request");

exports.config = {
    afterTest: async function (test, context, { error, result, duration, passed, retries }) {
        let sessionid = browser.sessionId;

        function doRequest(url, testStatus) {
            return new Promise(function (resolve, reject) {
                request({
                    uri: url,
                    method: 'PUT',
                    form: { 'status': testStatus, 'reason': "" }
                }, function (error, response, body) {
                    if (!error && response.statusCode === 200) {
                        resolve(body)
                    }
                    else {
                        reject(error)
                    }
                })
            })
        }

        if (test.passed) {
            let res = await doRequest(`https://${this.user}:${this.key}@api.browserstack.com/automate/sessions/${sessionid}.json`, "passed")
            console.log(res)
        }
        else {
            let res = await doRequest(`https://${this.user}:${this.key}@api.browserstack.com/automate/sessions/${sessionid}.json`, "error")
            console.log(res)
        }
    },
}

您好,您能帮助我们
request()
方法属于哪里吗?它是
请求
节点模块吗?上述代码是否在
wdio.conf.js
文件中?在高层,我可以看到您缺少处理asyn行为的能力。请提供这些信息,我应该能够帮助你you@NaveenThiyagarajan-请看下面我的答案