如何通过nightwatch.js自定义命令向浏览器堆栈发送适当的请求?

时间:2019-05-10 14:12:03

标签: node.js nightwatch.js browserstack

我对此进行了大量研究(browserstack docsthis older examplenpm docs仅举几例),但我的代码仍然无法正常工作。我也接触过浏览器堆栈,因此我正在等待他们的帮助。首先,我设置会话ID:

    module.exports.command = function (browser, done) {
        browser.session(function (session) {
        browser.browserStackSessionId = session.sessionId;
        console.log("browser.bsSessionID: "+ browser.browserStackSessionId);
        done();
      });

然后,我发出请求:

 var request = require("request");
 console.log("making request");
    request({
        uri: `https://${BROWSERSTACK_USERNAME}:${BROWSERSTACK_ACCESS_KEY}@api.browserstack.com/automate/sessions/${browser.browserStackSessionId}.json`,
        method:"PUT",
        form:{"status":"failed","reason": JSON.stringify(browser.currentTest.results.failure)}},
        function (error, response, body) {
            console.log("Error " + error);
            console.log("Response " + JSON.stringify(response.statusCode));
            })

代码运行时,控制台日志显示在终端中。会话ID是我期望的。我一开始设置的身份不正确,所以我收到了错误响应,告诉我代码正在运行,但是我没有在浏览器堆栈仪表板中看到更新,因此也许数据没有发送。

1 个答案:

答案 0 :(得分:0)

我看到您想将测试会话标记为失败。您能否尝试执行示例NodeJS脚本:

var request = require("request");
request({uri: "https://your_browserstack_username:your_browserstack_access_key@api.browserstack.com/automate/sessions/<session-id>.json", method:"PUT", form:{"status":"passed","reason":""}})

链接中提供了相同的详细信息:https://www.browserstack.com/automate/node#rest-api