与PhantomJS?
发布于 2014-06-09 00:49:19
poltergeist是用于PhantomJS的水豚驱动程序,这是一个构建在WebKit上的无头浏览器。capybara-webkit是一个直接使用WebKit的水豚驱动程序。
与capybara-webkit相比,poltergeist/PhantomJS有一些很大的优势:
发布于 2015-08-26 16:51:24
TL;DR
Long:
我已经使用Poltergeist + PhantomJS一年多了。我最大的项目有很多Ajax调用,文件上传,图片操作,JS模板和纯CSS3动画。
有时,Poltergeist和PhantomJS会产生随机错误。
其中一些是我的错误。测试Ajax是一件棘手的事情。一个常见的错误是,在成功的测试结束时,Ajax gem截断了数据库,但是,由于数据库为空,一个database_cleaner调用仍在运行,并在控制器中生成异常。这并不总是很容易修复,除非您想使用sleep()。(我没有)。
然而,很多关于“幽灵”的错误并不是我的错误。我有一个测试,它做同样的事情30次(出于一个很好的理由),有时30次中有1次不起作用。幽灵根本没有点击这个按钮。这是一个可见的、非动画的普通按钮。我可以修复它(通过再次点击它),然而,这是一个丑陋的黑客行为,感觉是错误的。
有时,在所有浏览器中工作的脚本会在Poltergeist/PhantomJS中随机生成javascript错误。大约100次中的1到2次。
对于两个不同的Ajax上传插件,我体验到了PhantomJS 1.9和2.0的不同表现。2.0更加稳定和一致,但它还远远不够完美。
这对Jenkins来说是一个巨大的痛苦。大约每三次运行就会失败一次,因为400个特性(js浏览器测试)中有1到2个会产生随机错误。
两周前我试过Capybara-webkit。我花了几个小时才迁移过来,因为他们对待不可见元素的方式不同。Capybara-webkit在这一点上更正确或更严格。我注意到重叠元素也是如此。
测试Ajax上传和图像操作需要自定义脚本,我必须为Capybara-webkit修改这些脚本。
我使用Mac进行开发,FreeBSD用于生产,Linux用于Jenkins。Capybara-webkit的设置比Poltergeist更复杂,因为它需要一个屏幕,并且有很多依赖项。只有PhantomJS是真正无头和独立的。如果我愿意,我可以在生产服务器上运行PhantomJS。由于依赖关系,我不会用capybara-webkit这样做。
现在我有100%稳定的Jenkins CI。所有随机的javascript错误都是过去的记忆。Capybara-webkit总是点击我想让它点击的按钮。Javascript总是运行得很好。目前我在直线上有大约20-25个稳定的构建。
对于有大量Ajax的项目,我推荐使用capybara-webkit。
我的建议是基于2015年8月的当前最新版本。
发布于 2014-05-31 05:46:16
capybara-webkit和PhantomJS都使用Webkit在幕后渲染网页,也就是说,不需要浏览器。然而,它们是不同的工具:
https://stackoverflow.com/questions/23951381
复制相似问题