Casperjs / PhantomJs vs Selenium
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Casperjs / PhantomJs vs Selenium相关的知识,希望对你有一定的参考价值。
我们正在使用Selenium来自动化我们的UI
测试。最近我们看到大多数用户使用Chrome。所以我们想知道 - 使用PhantomJS和Selenium的利弊:
- 在性能方面是否有任何真正的优势,例如执行测试用例所需的时间?
- 什么时候应该更喜欢PhantomJS而不是Selenium?
他们正在攻击不同的问题。由于PhantomJS在命令行上运行完美,因此无论是作为开发工作流程的一部分还是/或在持续集成服务器中,它都适合作为第一层烟雾测试。 Selenium针对多个浏览器,因此它非常有用,可确保跨浏览器的一致性并在不同的操作系统上进行广泛的测试。
如果您的Web应用程序需要在各种Web浏览器上运行,则仅使用PhantomJS运行UI测试不会产生最多的测试覆盖率。但是,在进行深入测试之前,启动PhantomJS并进行一些基本的健全性检查是完全可以的。想象一下,测试一个财务应用程序的疯狂,其中登录屏幕无意中被破坏而且无法正常运行!
请注意,最新的PhantomJS中最近的WebDriver支持使两者之间的界限略微模糊。现在可以使用PhantomJS快速运行测试,然后(假设没有遇到严重错误)继续在Selenium设置中彻底执行相同的测试。
通过最近的WebDriver集成(如Ariya所说),您现在可以使用Selenium来驱动PhantomJS。
这非常强大。
您可以在每次签入时通过无头Unix服务器上的CI运行一组完全自动化的Selenium测试(使用PhantomJS作为WebDriver实现)。然后,如果要测试浏览器兼容性,可以通过将基础WebDriver实现更改为Chrome,Firefox等来在本地运行测试。
我目前正在编写一个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 1423和HTML-UNIT 1046。
- Firefox是最慢的Selenium驱动程序,即使我禁用图像加载和样式表。这是因为它是加载和初始化最慢的,使得它比Chrome慢得多,并且每次提取失败时我都需要重新加载驱动程序(在测试中我创建了一个包含5个驱动程序的池,以减轻所有的URL检索延迟Selenium网站驱动程序)。
- PhantomJS比Firefox更准确,略低于Chrome,但大约只有Firefox的一半时间。更重要的是,我可以在我的开发盒上运行它,它不会通过启动多个浏览器“接管我的机器”,所以我可以继续工作。
我强烈推荐PhantomJS。
利用Selenium和PhantomJS的强大功能PhantomJS具有无头浏览器功能,因此最好将其用作selenium的浏览器之一(除了传统浏览器,如IE,Chrome等),这种方法的优点:
- 可用于在CI中为Web应用程序执行Sanity(即使代理计算机没有IE或chrome),测试也会有效运行。
- 一些开发团队使用此方法来获得快速结果并消耗更少的时间和资源。
- 幻像JS的最大特点是屏幕捕获,使用多线程运行并行测试,这将极大地缩短您的执行时间。
使用PhantomJS时遇到的挑战:
我的应用程序定价Web应用程序:
- 在某些时候,在chrome浏览器上工作正常的定位器不能处理phantomJS。
- 有时在执行双击或上下文点击时,我必须额外检查以确认操作,因为它首先没有点击。
- 缓存和cookie持久性。在注销然后登录后,数据保留在缓存中。 |所以我们对chrome进行测试。
- 我发现“文件上传问题”中最重要的问题之一。我们无法在我们的应用程序中的phantomJs浏览器中上传文件。我们尝试了很多东西javascriptexcutor,jqueries,但它们都没有工作。所以我们也在Chrome上执行此测试。注意:我们在框架中广泛使用了javascript函数来与PhantomJS的web元素进行交互。有一件事是确保PhantomJS的执行时间非常短。因此,取决于客户端的优先级,他是否需要功能/性能,然后继续使用它。如果您想测试端到端场景,那么请选择chrome。
以上是关于Casperjs / PhantomJs vs Selenium的主要内容,如果未能解决你的问题,请参考以下文章
通过 Charles 代理 casperjs / phantomjs
windows10 phantomjs CasperJS安装和使用
使用 casperjs/phantomjs 登录到 Amazon Developer 网页
javascript Cheatsheet:CasperJS,PhantomJS&Spooky。更多:http://journal.gentlenode.com/casperjs-2-chea