26

我目前正在尝试为 CI (Hudson) 构建一个小测试套件。我编写了一个复杂的脚本,它动态调用其他脚本并填充给定的 DIV 元素。

我的 Selenium 测试适用于琐碎的示例(加载 www.google.com,搜索 q-Element 等)

但是当我尝试在我的 PhantomJS 实例中运行一个与 Firefox-Driver 一起工作的复杂测试时,它崩溃了。发生段错误。

我的问题是,如何为我的前端 JS 编写测试,该 JS 在运行(无头)的 Hudson-Server 上运行。

或者有没有办法调试导致段错误的原因?

4

4 回答 4

15

Slimer.js 类似于 Phantom.js,但使用 Gecko 而不是 Webkit。

http://slimerjs.org/

于 2013-07-15T14:19:15.557 回答
14

使用 Xvfb 作为虚拟帧缓冲区(在托管网格节点的 Linux 机器上)时,可以进行无头安装。最终使用了这个和默认的 Firefox。

于 2013-02-26T13:18:12.987 回答
9

Phantom 是一个不断发展的产品,直到最近才获得与 Selenium 集成的能力,因此您可能遇到了一个错误;您是否尝试将其报告给 Phantom 开发人员?

  • 幻影的替代品:

    没有很多。Zombie是我所知道的,但 Phantom 比任何其他无头浏览器都遥遥领先。

    您还可以尝试使用无头虚拟服务器来运行任何普通的 Web 浏览器。(这也将具有比 Phantom 更真实的测试的优势)

  • 硒的替代品:

    您可以使用Sahi作为 Selenium 的直接替代品。它可以做很多相同的事情,但工作方式却大不相同。当然,您的测试脚本需要重写。

    Phantom 是为脚本设计的,因此您实际上根本不需要使用像 Selenium 这样的驱动程序工具;你可以直接编写脚本,或者使用像CasperJS这样的工具来编写你的测试脚本。

于 2013-02-26T13:36:36.323 回答
7

jsdom现在是一个不错的选择,它已经相当成熟了。

https://github.com/tmpvar/jsdom/

它用于无头测试。我不认为它会像 phantomjs 那样做屏幕截图,因为它没有 webkit 或 gekko 渲染器,它的纯 JS。

我发现这是因为 phantomjs segfaults 并且新版本不会构建。slimerjs 并不是真正的无头,它基于 FireFox 刚刚放弃的 XULRunner,它不适用于我当前的 FF。

jsdom 非常酷,它最初是一个 XML 解析器,现在拥有完整的网络后端和 jQuery 支持。

API 与 phantomjs 不同。

于 2015-12-03T23:43:35.553 回答