【问题标题】:CasperJS/PhantomJS chokes on loading a pageCasperJS/PhantomJS 在加载页面时阻塞
【发布时间】:2016-05-05 18:21:27
【问题描述】:

我正在使用 phantomjs 运行以下脚本:

var casper = require('casper').create();
var url = 'https://itunesconnect.apple.com/itc/static/login?view=1&path=%2FWebObjects%2FiTunesConnect.woa%3F'

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.start(url, function(){
    casper.wait(7000, function(){
        // casper.echo(casper.getHTML());
    })
})

casper.run(function() {
  if (errors.length > 0) {
    this.echo(errors.length + ' Javascript errors found', "WARNING");
  } else {
    this.echo(errors.length + ' Javascript errors found', "INFO");
  }
  casper.exit();
});

直到几天前,我才能访问加载包含 2 个表单字段的 iframe 的页面,以允许用户登录。

现在我收到以下错误:

Error:    Error: undefined is not a constructor (evaluating '$stateParams.path.startsWith('/')')

    at setupDSiFrame (https://itunesconnect.apple.com/itc/static-resources/controllers/login_cntrl.js?cache=111920151100:99:46)

    at https://itunesconnect.apple.com/itc/static-resources/controllers/login_cntrl.js?cache=111920151100:19:37

    at $digest (https://itunesconnect.apple.com/itc/js/compiled/lib/vendor.js?cache=111920151100:13:11750)

    at $apply (https://itunesconnect.apple.com/itc/js/compiled/lib/vendor.js?cache=111920151100:13:13237)

    at f (https://itunesconnect.apple.com/itc/js/compiled/lib/vendor.js?cache=111920151100:12:56414)

    at r (https://itunesconnect.apple.com/itc/js/compiled/lib/vendor.js?cache=111920151100:12:65848)

    at onreadystatechange (https://itunesconnect.apple.com/itc/js/compiled/lib/vendor.js?cache=111920151100:12:66409)

file:     https://itunesconnect.apple.com/itc/js/compiled/lib/vendor.js?cache=111920151100

line:     12

页面使用 slimerjs 作为引擎加载正常,但是当使用 slimerjs 时,登录表单没有被填写,因为窗口不在焦点上。 我相信这是 casper 使用旧版本的 WebKit 并在加载页面时阻塞的问题。我该如何解决这个问题?

【问题讨论】:

  • 0 Javascript errors found 使用 CasperJS 1.1.0-beta3 和 PhantomJS 1.9.8
  • @Vaviloff -- 是的,但如果你进行屏幕截图,那只会给出一个加载页面。您能否验证它是否正常工作并加载登录屏幕而不是加载 gif?

标签: javascript phantomjs casperjs


【解决方案1】:

解决问题为时已晚,但如果有人发现在 PhantomJS 中搜索 startsWith 问题的问题(就像我所做的那样),可能对将来的参考有用:在 ECMAScript 6 规范中添加了 startsWith 方法,即PhantomJS 不支持。

一个很好的 polyfill 是 mathiasbynens/String.prototype.startsWith

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多