私はe2eテストに 分度器 を使用しています。
URLにアクセスしたいのですが、次のように言います。
browser.get("http://my.test.com");
そして、httpステータスコードとすべての応答本文テキストを取得しますが、それらを取得する方法が見つかりません。使用できる方法はありますか?
Httpステータスコードを取得することは不可能です。 Selenium webdriver APIがそれを追加しないことが解決されました そしてProtractorはブラウザとの対話をSeleniumに依存しています。
このための回避策を見つける必要があります。 Protractorがpromiseを理解するヘルパー関数を使用してNodeJS内で実行される場合、NodeJSを使用して、Protractorが続行する前にhttpgetを待機します。
// 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サーバー側を変更することです。
<h1 id="web_403">403 Access Denied</h1>