poltergeist是PhantomJS的水豚驱动程序,PhantomJS是一个基于WebKit构建的无头浏览器.capybara-webkit是一个直接使用WebKit的水豚驱动程序.
poltergeist/PhantomJS比capybara-webkit有一些很大的优势:
根据我的经验,吵闹鬼/ PhantomJS总是会在应有的时候超时,而capybara-webkit有时会挂起.
它的错误信息更清晰.例如,它实际上会告诉您它是否无法单击页面上的元素,因为它前面有另一个元素.
可以告诉它重新引发Javascript错误作为测试错误(通过使用js_errors实例化驱动程序:true).
PhantomJS比独立的WebKit更容易安装.PhantomJS提供了一个几乎无依赖的可执行文件,您可以下载,而独立的WebKit有许多操作系统库依赖项,您可能需要升级或以其他方式操作.
子弹#2救了我的一天.由于你的答案,我从capybara-webkit切换到了poltergeist,现在我推荐它.我仍然没有测量性能变化,但到目前为止似乎很好. (3认同)
这使得更完整的测试套件,因为它也捕获javascript错误并且未通过测试. (2认同)
Martina Móze.. 36
TL; DR
Poltergeist/PhantomJS更容易设置
Poltergeist/PhantomJS具有较少的依赖性
Capybara-webkit更稳定可靠,对CI来说更好
长:
我一直使用Poltergeist + PhantomJS超过一年.我最大的项目有很多Ajax调用,文件上传,图像处理,JS模板和纯CSS3动画.
Poltergeist和PhantomJS不时产生随机错误.
其中一些是我的错误.测试Ajax很棘手.一个常见错误是,在成功测试结束时,database_cleaner gem截断了数据库,但是,由于空数据库,一个Ajax调用仍在运行并在控制器中生成异常.除非你想使用sleep(),否则这并不总是很容易修复.(我不).
然而,Poltergeist的许多错误都不是我的错误.我有一个测试,它做同样的事情30次(有充分的理由),并且偶尔30次中的1次不起作用.Poltergeist根本没有点击按钮.这是一个可见的,不是动画的普通按钮.我可以解决它(再次点击它),然而,这是一个丑陋的黑客,感觉不对.
有时,在所有浏览器中运行的脚本都会使用Poltergeist/PhantomJS生成随机javascript错误.大约1或2次100次.
使用两个不同的Ajax上传器插件,我经历过PhantomJS 1.9和2.0表现不同.2.0更稳定和一致,但它远非完美.
这对詹金斯来说是一个巨大的痛苦.大约每三次运行都是失败的,因为400个功能中的1个或2个(js浏览器测试)产生了随机错误.
两周前,我尝试了Capybara-webkit.我花了几个小时才进行迁移,因为它们以不同的方式处理隐形元素.Capybara-webkit在这方面更正确或更严格.我注意到重叠元素也是如此.
测试Ajax上传和图像处理需要我必须为Capybara-webkit修改的自定义脚本.
我正在使用Mac OS X进行开发,使用FreeBSD进行生产,使用Linux进行Jenkins.Capybara-webkit设置比Poltergeist更复杂,因为它需要一个屏幕,并且它有许多依赖项.只有PhantomJS真正无头且独立.如果我愿意,我可以在生产服务器上运行PhantomJS.由于依赖性,我不会使用capybara-webkit.
现在我有100%稳定的Jenkins CI.所有随机的javascript错误都是过去的回忆.Capybara-webkit总是点击我希望它点击的按钮.Javascript总能正常工作.目前我在直线上有大约20-25个稳定版本.
对于有大量Ajax的项目,我推荐使用capybara-webkit.
我的建议是基于2015年8月的最新版本.
poltergeist是PhantomJS的水豚驱动程序,PhantomJS是一个基于WebKit构建的无头浏览器.capybara-webkit是一个直接使用WebKit的水豚驱动程序.
poltergeist/PhantomJS比capybara-webkit有一些很大的优势:
根据我的经验,吵闹鬼/ PhantomJS总是会在应有的时候超时,而capybara-webkit有时会挂起.
它的错误信息更清晰.例如,它实际上会告诉您它是否无法单击页面上的元素,因为它前面有另一个元素.
可以告诉它重新引发Javascript错误作为测试错误(通过使用js_errors实例化驱动程序:true).
PhantomJS比独立的WebKit更容易安装.PhantomJS提供了一个几乎无依赖的可执行文件,您可以下载,而独立的WebKit有许多操作系统库依赖项,您可能需要升级或以其他方式操作.
TL; DR
Poltergeist/PhantomJS更容易设置
Poltergeist/PhantomJS具有较少的依赖性
Capybara-webkit更稳定可靠,对CI来说更好
长:
我一直使用Poltergeist + PhantomJS超过一年.我最大的项目有很多Ajax调用,文件上传,图像处理,JS模板和纯CSS3动画.
Poltergeist和PhantomJS不时产生随机错误.
其中一些是我的错误.测试Ajax很棘手.一个常见错误是,在成功测试结束时,database_cleaner gem截断了数据库,但是,由于空数据库,一个Ajax调用仍在运行并在控制器中生成异常.除非你想使用sleep(),否则这并不总是很容易修复.(我不).
然而,Poltergeist的许多错误都不是我的错误.我有一个测试,它做同样的事情30次(有充分的理由),并且偶尔30次中的1次不起作用.Poltergeist根本没有点击按钮.这是一个可见的,不是动画的普通按钮.我可以解决它(再次点击它),然而,这是一个丑陋的黑客,感觉不对.
有时,在所有浏览器中运行的脚本都会使用Poltergeist/PhantomJS生成随机javascript错误.大约1或2次100次.
使用两个不同的Ajax上传器插件,我经历过PhantomJS 1.9和2.0表现不同.2.0更稳定和一致,但它远非完美.
这对詹金斯来说是一个巨大的痛苦.大约每三次运行都是失败的,因为400个功能中的1个或2个(js浏览器测试)产生了随机错误.
两周前,我尝试了Capybara-webkit.我花了几个小时才进行迁移,因为它们以不同的方式处理隐形元素.Capybara-webkit在这方面更正确或更严格.我注意到重叠元素也是如此.
测试Ajax上传和图像处理需要我必须为Capybara-webkit修改的自定义脚本.
我正在使用Mac OS X进行开发,使用FreeBSD进行生产,使用Linux进行Jenkins.Capybara-webkit设置比Poltergeist更复杂,因为它需要一个屏幕,并且它有许多依赖项.只有PhantomJS真正无头且独立.如果我愿意,我可以在生产服务器上运行PhantomJS.由于依赖性,我不会使用capybara-webkit.
现在我有100%稳定的Jenkins CI.所有随机的javascript错误都是过去的回忆.Capybara-webkit总是点击我希望它点击的按钮.Javascript总能正常工作.目前我在直线上有大约20-25个稳定版本.
对于有大量Ajax的项目,我推荐使用capybara-webkit.
我的建议是基于2015年8月的最新版本.
capybara-webkit和PhantomJS都使用Webkit在无人值守的情况下呈现网页,即无需浏览器.然而,它们是不同的工具:
capybara-webkit作为Capybara的适配器,Capybara是一个Ruby gem,可以让你为Rails或Rack应用程序编写和执行高级UI测试.
PhantomJS是一个较低级别的工具,它只允许您针对网页运行脚本.它也可以用于编写UI测试(例如,参见Casper,或者构建在PhantomJS上的任何其他测试工具).