0

我正在使用 CasperJS 1.0.3 和 PhantomJS 1.9.0。时不时地出现一个错误说'undefined' is not an object (evaluating 'c.startedAt.getTime') [object Object],[object Object]。更罕见的是,它将b.getTime代替c.startedAt.getTime. 它只发生在几个选定的页面上,这些页面唯一的共同点是它们非常依赖 JavaScript。

发生此错误时,页面正在加载并完全按预期运行,并且测试继续按应有的方式运行,但是从纯粹的通过/失败的角度来看,此错误会导致大量误报。

我已经评估了在这个错误表面的页面上使用的所有 javascript,c.startedAt.getTime并且b.getTime不在任何文件中,无论是开发版本还是缩小版本。

有没有人见过这个错误?这是 CasperJS 的问题吗?幻影JS?它只发生在几个特定页面上的事实让我认为这是这些页面的问题,但就像我说的那样,我找不到任何与源 javascriptc.startedAt.getTime或远程相似的东西。b.getTime

我还以各种组合使用了 CasperJS 1.0.2 和 PhantomJS 1.9.1,但仍然出现错误。

一些上下文的日志:

[info] [phantom] Step 1143/1151: done in 18ms.
[info] [phantom] Step 1144/1151 (url removed for privacy)
[info] [phantom] Step 1144/1151: done in 0ms.
FAIL Error: TypeError: 'undefined' is not an object (evaluating 'c.startedAt.getTime') [object Object],[object Object]
Error: TypeError: 'undefined' is not an object   (evaluating 'c.startedAt.getTime')[object Object],[object Object]
[Error: TypeError: 'undefined' is not an object (evaluating 'c.startedAt.getTime')[object Object],[object Object]] fail failed
[Error: TypeError: 'undefined' is not an object (evaluating 'c.startedAt.getTime')[object Object],[object Object]] subject: false
 #    type: fail
 #    subject: false
4

1 回答 1

0

很可能是因为您没有等待对象加载。waitForSelector如果它是一个特定的 div 或者使用wait. 只需使用

casper.wait(11000, function(){
    //your code here
});

您可能需要替换casper为需要的任何对象casper

于 2013-08-15T20:11:12.557 回答