如何使用量角器获取响应状态代码和响应文本?

Fre*_*ind 13 protractor

我正在使用量角器进行e2e测试.

我想访问一个网址,说:

browser.get("http://my.test.com");
Run Code Online (Sandbox Code Playgroud)

并获取http状态代码和所有响应正文文本,但我找不到获取它们的方法.有什么方法可以用吗?

Leo*_*cci 19

获取http状态代码是不可能的,因为已经解决了selenium webdriver API不会添加它,而Protractor依赖于Selenium与浏览器进行交互.

你需要为此找到一个解决方法,例如使用NodeJS,因为Protractor在其中运行了一个了解promises的辅助函数,因此Protractor在继续之前等待http get:

// A Protracterized httpGet() promise
function httpGet(siteUrl) {
    var http = require('http');
    var defer = protractor.promise.defer();

    http.get(siteUrl, function(response) {

        var bodyString = '';

        response.setEncoding('utf8');

        response.on("data", function(chunk) {
            bodyString += chunk;
        });

        response.on('end', function() {
            defer.fulfill({
                statusCode: response.statusCode,
                bodyString: bodyString
            });
        });

    }).on('error', function(e) {
        defer.reject("Got http.get error: " + e.message);
    });

    return defer.promise;
}

it('should return 200 and contain proper body', function() {
    httpGet("http://localhost:80").then(function(result) {
        expect(result.statusCode).toBe(200);
        expect(result.bodyString).toContain('Apache');
    });
});
Run Code Online (Sandbox Code Playgroud)

其他选项可能是将html服务器端相应地更改为响应状态代码,如本博文中所述

<h1 id="web_403">403 Access Denied</h1>
Run Code Online (Sandbox Code Playgroud)