我在 Protractor 中发送 HTTP get 请求时遇到问题。实际上,我需要在 UI 中执行一些操作后检查数据库中的数据。
如果我能够使用 JQuery 来完成它将会非常有帮助,但我无法找到如何在 Protractor 中使用 JQuery 的方法。
需要帮助!!
实际上,我们确实尝试使用如下所示的 Node.js 库,但遇到了问题。
var http = require('http');
var json_data;
http.get('SiteUrl', function(response) {
var bodyString = '';
response.setEncoding('utf8');
response.on("data", function(chunk) {
bodyString += chunk;
});
response.on('end', function() {
json_data = bodyString;
console.log("1---->" + json_data);
});
}).on('error', function(e) {
console.log("There is an error in GET request");
});
console.log("2---->" + json_data);
调试后,我们发现问题是 Protractor 没有等待 HTTP 请求完成而直接传递。我们首先在控制台中获取 2----->
,然后是 1---->
。
最佳答案
我还使用 http 模块(用于不同的目的,用于重新初始化数据库)。
要让 Protractor 等待结束请求,使用 promises
var http = require('http');
var json_data;
http.get('SiteUrl', function(response) {
var bodyString = '';
response.setEncoding('utf8');
response.on("data", function(chunk) {
bodyString += chunk;
});
response.on('end', function() {
json_data = bodyString;
console.log("1---->"+json_data);
// All the processing and Angular code should be here
console.log("2---->"+json_data);
});
}).on('error', function(e) {
console.log("There is an error in GET request");
});
如果您不喜欢将所有数据处理都放在response.on('end') 回调中,那么将回调设为一个单独的函数。
此外,我不得不说 Protractor 不是用来直接检查数据库的。它用于端到端测试。您最好构建一个复杂的场景,在其中一个页面上写入一些数据,转到另一个页面并期望数据得到更新。
关于jquery - 如何在 Protractor 中发起 HTTP GET+POST 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30319610/