Pra*_*ams 60 capybara phantomjs capybara-webkit poltergeist
Dav*_*uth 65
poltergeist是PhantomJS的水豚驱动程序,PhantomJS是一个基于WebKit构建的无头浏览器.capybara-webkit是一个直接使用WebKit的水豚驱动程序.
poltergeist/PhantomJS比capybara-webkit有一些很大的优势:
Mar*_*zes 36
TL; DR
长:
我一直使用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月的最新版本.
归档时间: |
|
查看次数: |
10266 次 |
最近记录: |