我正在使用protractor进行e2e测试。
我想访问一个网址,说:
browser.get("http://my.test.com");
获取http状态代码和所有响应正文,但我找不到获取它们的方法。我有什么方法可以使用吗?
答案 0 :(得分:19)
获取http状态代码是不可能的,因为it's been resolved that selenium webdriver API won't add it和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');
});
});
其他选项可能是将html服务器端相应更改为响应状态代码,如this blog post
<h1 id="web_403">403 Access Denied</h1>