【问题标题】:CasperJS test won't return after executionCasperJS 测试执行后不会返回
【发布时间】:2015-02-15 09:28:03
【问题描述】:

我在让 casperjs 测试在执行后退出时遇到问题,我必须点击 CTL-C 才能退出执行。

misc.js

var require = patchRequire(require);

var site = {
    goToSite: function (url) {
        casper.start(url, function checkSite() {
            this.test.assert(this.getCurrentUrl() === url, 'Url is: ' + this.getCurrentUrl());
            this.test.assertHttpStatus(200, 'HTTP status code 200 OK');
        });
    },

    login: function () {
        casper.then(function fillTheForm() {
                this.fill("form[action='/auth/login']", {
                    'email': 'login@email.com',
                    'password': 'pass'
                }, true);
            }
        );
    }
};

module.exports.site = site;

test.js

var system = require('system');
var misc = require('./misc');
casper.options.logLevel = "debug";
casper.options.verbose = true;

casper.on("resource.error", function(errorCode, errorString, url, id){
    this.echo(errorString);
});

casper.on("page.error", function(msg, trace){
    this.echo(msg);
});

casper.on("remote.message", function(message){
    this.echo(message);
});

casper.test.begin('Cow can moo', 2, function suite(test) {
    var url = "http://ym.cms2cms/auth/login";
    misc.site.goToSite(url);
    misc.site.login();

    casper.run(function () {
        test.done();
    });
});

终端

PASS 网址为:http://ym.cms2cms/auth/login 通过 HTTP 状态码 200 OK PASS 2 个测试在 1.596 秒内执行,2 个通过,0 个失败,0 个可疑,0 个跳过。

http://screencast.com/t/5ZmTZLK3C5Bk

【问题讨论】:

  • 你在windows上吗?您确定必须按 Ctrl+C 而不是直接按 Enter 键吗?
  • 我必须按 Ctrl+C,但是当我注释掉这段代码时 //misc.site.login();执行后测试退出
  • 添加事件 - 没有任何改变 ... casper.on("resource.error", function(errorCode, errorString, url, id){ this.echo(errorString); }); casper.on("page.error", function(msg, trace){ this.echo(msg); }); casper.on("remote.message", function(message){ this.echo(message); }); @Artjom B
  • 类似的问题,奇怪的解决方法:CasperJS: how to exit script execution?

标签: javascript casperjs


【解决方案1】:

从调用测试中删除号码,如下所示:

casper.test.begin('Cow can moo', function suite(test) {

根据 Casper JS Api,它指的是计划的数量,您指定 2,只有 1 个测试。我发现完全删除它效果很好,并且仅在需要时指定。

文档中的注释: 计划的参数在给定的测试脚本突然中断的情况下特别有用,让您没有明显的方法知道它并且错误地成功状态。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-05
    • 2013-11-27
    • 1970-01-01
    • 2020-02-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多