'undefined'不是对象(评估'c.startedAt.getTime')或'undefined'不是对象(评估'b.getTime')

时间:2013-08-15 14:12:37

标签: javascript phantomjs casperjs

我正在使用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,并且c.startedAt.getTimeb.getTime不在任何文件中,包括dev和minified版本。

有没有人见过这个错误?是CasperJS的问题吗? PhantomJS?事实上它只发生在几个特定页面上,这让我觉得这些页面存在问题,但就像我说的那样,我找不到任何与源代码中c.startedAt.getTimeb.getTime类似的东西的JavaScript。

我还以各种组合使用了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

1 个答案:

答案 0 :(得分:0)

很可能是因为您没有等待加载对象。如果是特定div,请使用waitForSelector或使用wait。只需使用

进行快速测试
casper.wait(11000, function(){
    //your code here
});

您可能需要将casper替换为需要casper的对象。