Я использую 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.«undefined» не является объектом (оценка «c.startedAt.getTime») или «undefined» не является объектом (оценка «b.getTime»)
Страницы загружаются и ведут себя точно так, как ожидалось, когда эта ошибка происходит, и тест продолжает работать точно так, как должен, но эта ошибка вызывает множество ложных негативов с точки зрения чистого прохода/сбоя.
Я оценил весь javascript, который используется на страницах этой ошибки, и c.startedAt.getTime
и b.getTime
не находятся ни в одном из файлов, как в dev, так и в мини-версиях.
Кто-нибудь видел эту ошибку? Это проблема с CasperJS? PhantomJS? Тот факт, что это происходит только на нескольких конкретных страницах, заставляет меня думать, что это проблема с этими страницами, но, как я уже сказал, я не могу найти ничего, что даже отдаленно напоминает c.startedAt.getTime
или b.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
В большинстве библиотек JavaScript отсутствует внутренняя проверка ошибок по соображениям производительности. Таким образом, неправильные вызовы библиотечных служб часто вызывают ошибки внутри библиотеки. Однако проблема с корнем - это не сам код библиотеки, а нечто построенное на ней. – Pointy