替代PhantomJS进行测试

时间:2013-02-19 17:49:55

标签: javascript testing phantomjs

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

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

但是当我尝试在我的PhantomJS实例中运行与Firefox驱动程序一起运行的复杂测试时,它会崩溃。发生了段错误。

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

或者有没有办法调试导致segfault的原因?

4 个答案:

答案 0 :(得分:15)

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

http://slimerjs.org/

答案 1 :(得分:14)

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

答案 2 :(得分:9)

Phantom是一款不断发展的产品,只是最近才获得了与Selenium集成的能力,所以你可能遇到了它的错误;你试过向Phantom开发者报告吗?

  • Phantom的替代品:

    没有多少。 Zombie是我所知道的,但Phantom在任何其他无头浏览器上都是首屈一指的。

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

  • Selenium的替代品:

    您可以使用Sahi作为Selenium的直接替代品。它具有相同的功能,但工作原理完全不同。当然,您的测试脚本需要重写。

    Phantom旨在编写脚本,因此您根本不需要像Selenium那样使用驱动程序工具;您可以直接编写脚本,或使用CasperJS之类的工具编写测试脚本。

答案 3 :(得分:6)

jsdom 现在是一个不错的选择,它非常成熟。

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

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

我发现这是因为phantomjs段错误并且新版本无法构建。 slimerjs并不是真正的无头,而且它的XULRunner基于哪个FireFox刚刚掉线,它对我当前的FF不起作用。

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

API与phantomjs不同。