jquery - 如何在 Protractor 中发起 HTTP GET+POST 请求

标签 jquery node.js jasmine protractor

我在 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/

相关文章:

html - 如何使 anchor 链接不可点击或禁用?

javascript - 在 DSpace 4.2 xmlui 中向 Discovery 侧边栏添加展开/折叠功能

javascript - MVC Bootstrap 部分 View ValidationMessageFor 在加载页面时执行

node.js - Nginx 和多个 Meteor/Nodejs 应用程序的问题

javascript - Angular 1.5 && 异步/等待 && Jasmine 测试

angularjs - Jasmine 无法模拟 Elasticsearch 对象

javascript - 切换点击效果

javascript - 如何正确结束或销毁扬声器实例而不出现 `illegal hardware instruction` 错误?

node.js - typescript + Express : Type 'typeof e' has no compatible call signatures

javascript - $httpBackend.flush 在服务抛出错误时失败