poltergeist/PhantomJS和capybara-webkit如何不同?

 我是风一样的我们 发布于 2023-01-12 14:49

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月的最新版本.

3 个回答
  • poltergeist是PhantomJS的水豚驱动程序,PhantomJS是一个基于WebKit构建的无头浏览器.capybara-webkit是一个直接使用WebKit的水豚驱动程序.

    poltergeist/PhantomJS比capybara-webkit有一些很大的优势:

    根据我的经验,吵闹鬼/ PhantomJS总是会在应有的时候超时,而capybara-webkit有时会挂起.

    它的错误信息更清晰.例如,它实际上会告诉您它是否无法单击页面上的元素,因为它前面有另一个元素.

    可以告诉它重新引发Javascript错误作为测试错误(通过使用js_errors实例化驱动程序:true).

    PhantomJS比独立的WebKit更容易安装.PhantomJS提供了一个几乎无依赖的可执行文件,您可以下载,而独立的WebKit有许多操作系统库依赖项,您可能需要升级或以其他方式操作.

    2023-01-12 14:51 回答
  • 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月的最新版本.

    2023-01-12 14:51 回答
  • capybara-webkit和PhantomJS都使用Webkit在无人值守的情况下呈现网页,即无需浏览器.然而,它们是不同的工具:

    capybara-webkit作为Capybara的适配器,Capybara是一个Ruby gem,可以让你为Rails或Rack应用程序编写和执行高级UI测试.

    PhantomJS是一个较低级别的工具,它只允许您针对网页运行脚本.它也可以用于编写UI测试(例如,参见Casper,或者构建在PhantomJS上的任何其他测试工具).

    2023-01-12 14:52 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有