Poltergeist/Phantomjs和Capybara-Webkit有何不同?[英] How do poltergeist/PhantomJS and capybara-webkit differ?

问题描述

  1. Phantomjs和Capybara-Webkit之间有什么区别?
  2. Capybara-Webkit比Phantomjs有什么优点?
  3. 这两个是最有效的工具中的哪个?
  4. 其他...

推荐答案

poltergeist 是phantomjs的Capybara驱动程序,这是一个无头浏览器,它是在webkit上建造的,它是在webkit上建造的. Capybara-Webkit是Capybara驱动程序,直接使用Webkit.

Poltergeist/Phantomjs比Capybara-Webkit具有一些很大的优势:

  • ) true ).
  • phantomjs比独立webkit更容易安装. phantomjs提供了您可以下载的几乎无依赖性可执行文件,而独立webkit具有许多OS库依赖关系,您可能必须升级或以其他方式使用.
  • .

其他推荐答案

tl; dr

  • Poltergeist/Phantomjs更容易设置
  • poltergeist/phantomjs的依赖项
  • Capybara-Webkit更稳定和可靠,对CI
  • 更好

长:

我已经使用Poltergeist + Phantomjs超过一年.我最大的项目有很多Ajax的电话,文件上传,图像操作,JS模板和纯CSS3动画.

不时,poltergeist和phantomjs会产生随机错误.

其中一些是我的错误.测试Ajax很棘手.一个常见的错误是,在成功测试结束时,数据库cleaner gem截断了数据库,但是,由于空数据库,一个AJAX调用仍在控制器中运行并生成异常.除非您要使用Sleep(),否则这并不总是很容易解决的. (我不).

但是,poltergeist的许多错误不是我的错误.我有一个测试,该测试做同样的事情30次(有充分的理由),而30次中有1次无效. Poltergeist根本没有单击该按钮.这是一个可见的,不是动画的,正常的按钮.我可以修复它(再次单击它),但是,这是一个丑陋的黑客,感觉不对.

有时在所有浏览器中起作用的脚本都会通过Poltergeist/Phantomjs生成随机的JavaScript错误.大约1或2个100次.

使用两个不同的Ajax上传器插件,我经历了Phantomjs 1.9和2.0的行为不同. 2.0更稳定和一致,但远非完美.

这对詹金斯来说是一个巨大的痛苦.大约每三个运行都是故障,因为400个功能(JS浏览器测试)产生了随机错误.

两个星期前,我尝试了Capybara-Webkit.我花了几个小时才迁移,因为它们对看不见的元素的处理方式有所不同. Capybara-Webkit在这方面更正确或严格.我注意到重叠元素相同.

测试AJAX上传和图像操作需要我为Capybara-Webkit修改的自定义脚本.

我正在使用Mac OS X进行开发,FreeBSD进行生产和Jenkins的Linux. Capybara-Webkit比Poltergeist更复杂,因为它需要一个屏幕,并且具有许多依赖性.只有phantomjs才是真正的无头和独立的.如果需要,我可以在生产服务器上运行Phantomjs.由于依赖关系,我不会用辣椒粉 - 韦比特这样做.

现在我有100%稳定的Jenkins CI.所有随机的JavaScript错误都是过去的记忆. Capybara-webkit始终单击我要它的按钮. JavaScript总是可以正常工作.目前,我的直线大约有20-25个稳定的构建.

对于有很多Ajax的项目,我建议Capybara-Webkit.

我的建议基于2015年8月的当前最新版本.

其他推荐答案

Capybara-webkit和Phantomjs都使用引擎盖下的Webkit无需浏览器即可渲染网页,即无需浏览器.但是它们是不同的工具:

  • Capybara-Webkit是Capybara的适配器,Ruby Gem可让您为Rails或Rack应用程序编写和执行高级UI测试.
  • phantomjs是一个较低级别的工具,可以简单地让您在网页上运行脚本.它也可以用来编写UI测试(请参阅 casper /phantomjs.org/headless-testing.html"> stesting工具建立在phantomjs上的).

本文地址:https://www.itbaoku.cn/post/1739864.html