Casperjs/PhantomJs vs Selenium

spi*_*189 148 user-interface selenium automation google-chrome phantomjs

我们正在使用Selenium来自动化我们的UI测试.最近我们看到大多数用户使用Chrome.所以我们想知道 - 使用PhantomJS和Selenium的利弊:

  • 在性能方面是否有任何真正的优势,例如执行测试用例所需的时间?
  • 什么时候应该更喜欢PhantomJS而不是Selenium?

Ari*_*yat 180

他们正在攻击不同的问题.由于PhantomJS在命令行上运行完美,因此无论是作为开发工作流程的一部分还是/或在持续集成服务器中,它都适合作为第一层烟雾测试.Selenium针对多个浏览器,因此确保跨浏览器一致性并在不同操作系统上进行广泛测试非常有用.

如果您的Web应用程序需要在各种Web浏览器上运行,则仅使用PhantomJS运行UI测试不会产生最多的测试覆盖率.但是,在进行深入测试之前,启动PhantomJS并进行一些基本的健全性检查是完全可以的.想象一下,测试一个财务应用程序的疯狂,其中登录屏幕无意中被破坏而且无法正常运行!

请注意,最新的PhantomJS中最近的WebDriver支持使两者之间的界限略微模糊.现在可以使用PhantomJS快速运行测试,然后(假设没有遇到严重错误)继续在Selenium设置中彻底执行相同的测试.

  • Ariya Hidayat看起来是PhantomJs的创造者 (34认同)
  • 在http://phantomjs.org/buzz.html中有很多外部文章的链接. (7认同)

小智 49

通过最近的WebDriver集成(如Ariya所说),您现在可以使用Selenium来驱动PhantomJS.

这非常强大.

您可以在每次签入时通过无头Unix服务器上的CI运行一组完全自动化的Selenium测试(使用PhantomJS作为WebDriver实现).然后,如果要测试浏览器兼容性,可以通过将底层WebDriver实现更改为Chrome,Firefox等来在本地运行测试.


Mar*_*ler 41

我目前正在编写一个Web提取框架.我有524个测试,使用XPath从250个网站获取数据.最初该框架使用HTML解析器HTMLCleaner,但我目前正在调查使用Selenium,因为我想要Javascript支持.我已针对HtmlUnit,Chrome,Firefox和PhantomJS驱动程序运行测试.以下是每种方法所用时间和失败次数的比较:

                    Failures    Time (secs) 
HtmlCleaner         0           82  
HtmlUnit            169         102 
Google Chrome       38          562 
Firefox             46          1159    
PhantomJS           40          575
Run Code Online (Sandbox Code Playgroud)

一些评论:

  • 在某些情况下,"失败"可能根本不是失败,可能是提取器失败,因为Javascript正在重写DOM.我正在分析找不到原因的失败.

  • 也就是说,HtmlUnit是最快的Selenium驱动程序,但它也不可靠.这种不可靠性不仅仅涉及Javascript,处理"凌乱,肮脏,真实世界"的HTML存在问题,因为标签平衡算法中的某些东西似乎被打破了.关于此问题已经提出了几个问题,但它们尚未修复 - 请参阅HTML-UNIT 1423HTML-UNIT 1046.

  • Firefox是最慢的Selenium驱动程序,即使我禁用图像加载和样式表.这是因为它是加载和初始化最慢的,使得它比Chrome慢得多,并且每次提取失败时我都需要重新加载驱动程序(在测试中我创建了一个包含5个驱动程序的池,以减轻所有的URL检索延迟Selenium网站驱动程序).

  • PhantomJS比Firefox更准确,略低于Chrome,但大约只有Firefox的一半时间.更重要的是,我可以在我的开发盒上运行它,它不会通过启动多个浏览器来"接管我的机器",所以我可以继续工作.

我强烈推荐PhantomJS.