【问题标题】:webpage.open() never calls callbackpages.open() 从不调用回调
【发布时间】:2013-03-13 07:37:13
【问题描述】:

我正在使用 PhantomJS 1.8.2 使用 JsTestDriver 运行一些 Jasmine 单元测试。使用 Chrome 测试运行良好,但使用 PhantomJS 大约有一半的时间,测试结果是没有找到测试用例。

我已将问题缩小到 PhantomJS 无法打开本地 JsTestDriver 页面 (http://localhost:9876/capture)。以下是重现此问题的方法,大约 50% 的情况下,Loaded ... with status ... 消息永远不会显示:

  • 在本地启动 JsTestDriver 服务器
  • 运行phantomjs phantomjs-jstd-bridge.js

文件phantomjs-jstd-bridge.js 如下所示:

var page = require('webpage').create();
var url = 'http://localhost:9876/capture';
console.log('Loading ' + url);
page.open(url, function(status) {
  console.log('Loaded ' + url + ' with status ' + status);
});

第一行日志 (Loading ...) 始终显示,但来自回调的第二行仅打印了大约一半时间。

这可能是什么原因?每次在网络浏览器中打开有问题的 URL 都可以正常工作。

有什么方法可以获取更多关于为什么 PhantomJS 不调用回调的信息?

【问题讨论】:

  • 由于您在测试中使用回调函数,您可能必须使用AsyncTestCase

标签: jasmine phantomjs js-test-driver


【解决方案1】:

查看Troubleshooting wiki 页面中提到的一些提示。特别有用的是跟踪网络传输活动,因为它可能指示某些资源是否未正确发送或其他类似问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-16
    • 2016-11-28
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多