好的,我会尝试详细解释其中的差异。
谈到并行测试时,最好使用Selenium Grid。
Selenium RC和Selenium Grid的基本概念。
你可以在这里了解更多细节。
关于Selenium WebDriver的一些话:
Selenium 2.0中的主要新功能是WebDriver API的集成。WebDriver旨在提供一个更简洁的编程接口,并解决Selenium-RC API中的一些限制。Selenium-WebDriver被开发出来以更好地支持动态网页,其中页面的元素可能会在不重新加载页面本身的情况下发生变化。WebDriver的目标是提供一个设计良好的面向对象API,为现代高级Web应用程序测试问题提供改进的支持。
与Selenium-RC相比,WebDriver如何“驱动”浏览器?
Selenium-WebDriver使用每个浏览器本身支持的自动化功能直接调用浏览器。这些直接调用的方式和它们所支持的功能取决于你使用的浏览器。有关每个“浏览器驱动程序”的信息将在本章后面提供。
对于那些熟悉Selenium-RC的人来说,这与你所习惯的完全不同。Selenium-RC为每个受支持的浏览器都工作方式相同。它在加载浏览器时“注入”javascript函数,然后使用其javascript驱动浏览器中的AUT。WebDriver不使用此技术。它再次直接使用浏览器内置的自动化支持来驱动浏览器。
WebDriver和Selenium-Server
根据你如何使用Selenium-WebDriver,你可能需要或不需要Selenium Server。如果你只使用WebDriver API,则不需要Selenium-Server。如果你的浏览器和测试都在同一台机器上运行,并且你的测试只使用WebDriver API,则不需要运行Selenium-Server;WebDriver将直接运行浏览器。
但是,使用Selenium-Server与Selenium-WebDriver也有一些原因。
- 您正在使用Selenium-Grid将测试分配到多台机器或虚拟机(VM)上。
- 您想连接到具有特定浏览器版本的远程计算机,该版本不在您当前的计算机上。
- 如果您没有使用Java绑定(例如Python、C#或Ruby),并且希望使用HtmlUnit驱动程序
Selenium-WebDriver的驱动程序
WebDriver是针对其编写测试的关键接口的名称,但有几个实现。这些包括:
HtmlUnit Driver
这是目前最快速和最轻量级的WebDriver实现。顾名思义,它基于HtmlUnit。HtmlUnit是一个没有GUI的WebBrowser的Java实现。对于任何语言绑定(除了java之外),都需要Selenium Server才能使用此驱动程序。
优点
- WebDriver最快的实现
- 纯Java解决方案,因此平台无关性强。
- 支持JavaScript
缺点
- 仿真其他浏览器的JavaScript行为(见下文)
JavaScript在HtmlUnit驱动程序中的应用
流行的浏览器都没有使用HtmlUnit(Rhino)所使用的JavaScript引擎。如果您使用HtmlUnit测试JavaScript,则结果可能与这些浏览器有很大的差异。
当我们说“JavaScript”时,实际上是指“JavaScript和DOM”。尽管DOM由W3C定义,但每个浏览器在其DOM实现和JavaScript交互方式方面都有自己的怪癖和差异。HtmlUnit具有令人印象深刻的DOM完整实现,并且对使用JavaScript具有良好的支持,但它与任何其他浏览器都没有区别:它具有其自身的怪癖和差异,与W3C标准和主要浏览器的DOM实现不同,尽管它能够模仿其他浏览器。
对于WebDriver,我们必须做出选择:我们是否启用HtmlUnit的JavaScript功能并冒着团队遇到仅在那里才表现出来的问题的风险,还是禁用JavaScript,因为越来越多的网站依赖于JavaScript?我们采取了保守的方法,并默认情况下禁用了在使用HtmlUnit时的支持。随着WebDriver和HtmlUnit的每个版本发布,我们会重新评估这个决定:我们希望在某个时候默认情况下启用HtmlUnit上的JavaScript。
要深入研究WebDriver的setUp,请参见this。
从
HtmlUnit文档中得知:
HtmlUnit不是通用的单元测试框架。它是一种专门用于模拟浏览器进行测试的方式,旨在在其他测试框架(如JUnit或TestNG)中使用。
因此
总结Selenium和HtmlUnit的区别:
HtmlUnit是一个基于Java实现的WebBrowser,没有GUI界面,可以模拟浏览器进行测试,而
Selenium-WebDriver通过调用每个浏览器本地支持的自动化功能来直接调用浏览器。我们可以看到,HtmlUnit提供了API无需GUI界面进行自动化,而WebDriver则提供了内置浏览器进行自动化的可能性。
谈到移动自动化,
Selenium也有iPhone Driver
iPhone Driver wiki article
和Android Driver
Android Driver wiki article
另请参阅
this presentation
很遗憾,我无法提供有关移动驱动程序的工作经验评估,因为我处理的是Web自动化(不涉及移动设备)。此外,了解到
Cucumber
(自动化工具)在移动自动化领域非常流行。请参见
this和
this。希望现在对您来说更加清晰了 =)