使用 nightwatch 检查 http 状态码

Posted

技术标签:

【中文标题】使用 nightwatch 检查 http 状态码【英文标题】:check http status code using nightwatch 【发布时间】:2016-07-08 15:04:56 【问题描述】:

如何使用 nightwatch.js 检查 HTTP 状态代码?我试过了

  browser.url(function (response) 
     browser.assert.equal(response.statusCode, 200);
  );

但这当然行不通。

【问题讨论】:

How to get HTTP Response Code using Selenium WebDriver with Java?的可能重复 不重复,这个问题与nightwatch JS有关 【参考方案1】:

试试这个

    var http = require("http");
    module.exports = 
      "Check Response Code" : function (client) 
          var request = http.request(
            host: "www.google.com",
            port: 80,
            path: "/images/srpr/logo11w.png",
            method: "HEAD"
          , function (response) 
            client
            .assert.equal(response.statusCode, 200, 'Check status');
            client.end();
          ).on("error", function (err) 
            console.log(err);
            client.end();
          ).end();
         
       ;

【讨论】:

【参考方案2】:

其实目前还没有办法使用 Selenium 获取页面的响应状态(https://github.com/seleniumhq/selenium-google-code-issue-archive/issues/141)

但是您可以轻松地做的是需要“请求”库,向您要在 Selenium 测试中打开的网页发出请求并验证响应状态代码等于 200:

const request = require('request');

request('http://***.com', (error, response, body) => 
    browser.assert.equal(response.statusCode, 200);
);

【讨论】:

【参考方案3】:

补充 Hilarion Galushka 的回答:您可以使用 nightwatch 中的 perform() 命令将请求和断言集成到您的 nightwatch 测试中。 http://nightwatchjs.org/api/perform.html

例如:

module.exports = 
    'test response code': function (browser) 
        browser.perform(done => 
            request('http://***.com', function (error, response, body) 
                browser.assert.equal(response.statusCode, 200);
                done()
            );
        )
    

【讨论】:

这是 IMO 的最佳答案。

以上是关于使用 nightwatch 检查 http 状态码的主要内容,如果未能解决你的问题,请参考以下文章

检查http响应状态码的最佳方法?

如何使用 jQuery 获取 HTTP 状态码?

Nightwatch+gulp

http状态码汇总及问题经验总结

http请求状态码

验证 HTTP 200 和 500 状态码的 Alamofire 响应