casperjs未捕获错误:TypeError:试图分配给readOnly属性

casperjs uncaught Error: TypeError: Attempted to assign to readOnly property

本文关键字:分配 属性 readOnly TypeError 错误 casperjs      更新时间:2023-09-26

有人知道我如何在casperjs中找出这个错误的原因吗?当我得到这个时,我试图运行的测试脚本是:

var errors = [];
casper.on("page.error", function(msg, trace) {
  this.echo("Error:    " + msg, "ERROR");
  this.echo("file:     " + trace[0].file, "WARNING");
  this.echo("line:     " + trace[0].line, "WARNING");
  this.echo("function: " + trace[0]["function"], "WARNING");
  errors.push(msg);
});
casper.on('resource.received', function(resource) {
    var status = resource.status;
    if(status >= 400) {
        casper.log('Resource ' + resource.url + ' failed to load (' + status + ')', 'error');
        errors.push({
            url: resource.url,
            status: resource.status
        });
    }
});

casper.test.begin('Are we online?', 3, function suite(test) {
    casper.start("http://www.google.com/", function() {
        test.assertTitle("Google", "Connected to google, internet connection probably ok");
    });
    casper.thenOpen("https://mysite", function() {
        test.assertTitle("Log On", "Connected to mysite, server is up");
        this.fill('form#logonForm', {
            'Name':    'user',
            'Password':    'pass',
        }, true);
    });
    casper.thenOpen("https://mysite/somepage", function() {    
        casper.test.assert(errors.length==0,'No js errors'); //THIS LINE SEEMS TO BE CAUSING THIS ERROR, NOT SURE WHY?
    });
    casper.run(function () {
        test.done();
    });
});

完整的错误消息是:

1个失败测试的详细信息:在connect-to-production.js:1968中(没有这样的行,我的js文件中只有我粘贴的行,远远没有2000行)

我们在线吗?(我的测试名称)uncaughtError:TypeError:试图分配给readOnly属性。

在此之上,它的行为与正常错误不同,并表示"无堆栈跟踪"。

找到了答案。

如果您有一个测试套件,如:casper.test.boot("我们在线吗?",4,功能套件(测试){

这意味着您必须在套件中有正好4个测试。如果你添加或删除任何断言,你会得到这个错误!

我是casperjs的新手,这要归功于Artjom B,他向我介绍了如何在我不习惯的环境中进行调试。