Casperjs / PhantomJs vs Selenium

问题描述 投票:146回答:5

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

  • 在性能方面是否有任何真正的优势,例如执行测试用例所需的时间?
  • 什么时候应该更喜欢PhantomJS而不是Selenium?
google-chrome user-interface selenium automation phantomjs
5个回答
180
投票

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

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

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


49
投票

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

这非常强大。

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


41
投票

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

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

一些评论:

  • 在某些情况下,“失败”可能根本不是失败,可能是提取器失败,因为Javascript正在重写DOM。我正在分析找不到原因的失败。
  • 也就是说,HtmlUnit是最快的Selenium驱动程序,但它也不可靠。这种不可靠性不仅仅涉及Javascript,处理“凌乱,肮脏,真实世界”的HTML存在问题,因为标签平衡算法中的某些东西似乎被打破了。关于这个问题已经提出了几个问题,但它们尚未修复 - 请参阅HTML-UNIT 1423HTML-UNIT 1046
  • Firefox是最慢的Selenium驱动程序,即使我禁用图像加载和样式表。这是因为它是加载和初始化最慢的,使得它比Chrome慢得多,并且每次提取失败时我都需要重新加载驱动程序(在测试中我创建了一个包含5个驱动程序的池,以减轻所有的URL检索延迟Selenium网站驱动程序)。
  • PhantomJS比Firefox更准确,略低于Chrome,但大约只有Firefox的一半时间。更重要的是,我可以在我的开发盒上运行它,它不会通过启动多个浏览器“接管我的机器”,所以我可以继续工作。

我强烈推荐PhantomJS。


2
投票

利用Selenium和PhantomJS的强大功能PhantomJS具有无头浏览器功能,因此最好将其用作selenium的浏览器之一(除了传统浏览器,如IE,Chrome等),这种方法的优点:

  1. 可用于在CI中为Web应用程序执行Sanity(即使代理计算机没有IE或chrome),测试也会有效运行。
  2. 一些开发团队使用此方法来获得快速结果并消耗更少的时间和资源。
  3. 幻像JS的最大特点是屏幕捕获,使用多线程运行并行测试,这将极大地缩短您的执行时间。

1
投票

使用PhantomJS时遇到的挑战:

我的应用程序定价Web应用程序:

  1. 在某些时候,在chrome浏览器上工作正常的定位器不能处理phantomJS。
  2. 有时在执行双击或上下文点击时,我必须额外检查以确认操作,因为它首先没有点击。
  3. 缓存和cookie持久性。在注销然后登录后,数据保留在缓存中。 |所以我们对chrome进行测试。
  4. 我发现“文件上传问题”中最重要的问题之一。我们无法在我们的应用程序中的phantomJs浏览器中上传文件。我们尝试了很多东西javascriptexcutor,jqueries,但它们都没有工作。所以我们也在Chrome上执行此测试。注意:我们在框架中广泛使用了javascript函数来与PhantomJS的web元素进行交互。有一件事是确保PhantomJS的执行时间非常短。因此,取决于客户端的优先级,他是否需要功能/性能,然后继续使用它。如果您想测试端到端场景,那么请选择chrome。
© www.soinside.com 2019 - 2024. All rights reserved.