Selenium 团队最近发布了 Selenium 2 (又名 Selenium WebDriver)。Selenium 是针对 Web 应用的测试框架,支持多种浏览器和多种编程语言。Selenium 2 的主要新功能是集成了 WebDriver——曾经是 Selenium 1(又名 Selenium RC)的竞争对手。Selenium RC 在浏览器中运行 JavaScript 应用,而 WebDriver 通过原生浏览器支持或者浏览器扩展直接控制浏览器。
从 Selenium 项目简史中了解到,Selenium 和 WebDriver 开发人员都认为两个工具各有优势,二者合并将创造更强大的 web 测试框架。Selenium 1 是一款流行和完善的测试框架,支持众多浏览器(因其 JavaScript 实现),允许用户通过许多编程语言(从 Java/C#到 PHP、Erlang…)。WebDriver 弥补了 Selenium 1 的缺点,跳出了 Javascript 的沙箱,提供快速、轻量级的浏览器模拟器。WebDriver 的创建者Simon Stewart 早在 2009 年八月的一份邮件中解释了项目合并的原因。
为何把两个项目合并?部分原因是 WebDriver 解决了 Selenium 存在的缺点(比如,能够绕过 JS 沙箱。我们有出色的 API),部分原因是 Selenium 解决了 WebDriver 存在的问题(例如支持广泛的浏览器),部分原因是因为 Selenium 的主要贡献者和我都觉得合并项目是为用户提供最优秀框架的最佳途径。
Selenium 2 还包括 Selenium Server,通过 Selenium Grid 支持分布式测试。新的 Selenium Grid 支持使用原来的 Selenium RC API 和 WebDriver API 测试。Selenium IDE 1.1.0 也将支持 WebDriver API,包括导出为 WebDriver 支持的各种编程语言(Ruby、Python、C#和 Java)。不幸的是,这也意味着 Selenium IDE 正式的在主要发布分支中逐步取消对 Groovy、Perl 和 PHP 的插件的支持。
WebDriver 针对各个浏览器而开发,取代了嵌入到被测 Web 应用中的 JavaScript。与浏览器的紧密集成支持创建更高级的测试,避免了 JavaScript 安全模型导致的限制。除了来自浏览器厂商的支持,WebDriver 还利用操作系统级的调用模拟用户输入。WebDriver 支持 Firefox ( FirefoxDriver )、IE ( InternetExplorerDriver )、Opera ( OperaDriver ) 和 Chrome ( ChromeDriver )。对 Safari 的支持由于技术限制在本版本中未包含,但是可以使用 SeleneseCommandExecutor 模拟。它还支持 Android ( AndroidDriver ) 和 iPhone ( IPhoneDriver ) 的移动应用测试。它还包括一个基于 HtmlUnit 的无界面实现,称为 HtmlUnitDriver 。WebDriver API 可以通过 Python、Ruby、Java 和 C#访问,支持开发人员使用他们偏爱的编程语言来创建测试。
Selenium 的上一个稳定版本是 1.0.3,发布于 2010 年二月。Selenium 2 向后兼容 Selenium 1,不过 Selenium 的新用户应该使用新 WebDriver API。Selenium 2 同时支持 Selenium RC API 和 WebDriver API。Selenium 1 仍然受到积极支持并提供目前 Selenium 2 未有的一些功能。这包括对其他语言的支持如 JavaScript、PHP 和 Perl,以及通过 Javascript 支持各个浏览器。如果想升级目前的 Selenium 测试,请阅读从 Selenium RC 迁移到 Selenium WebDriver 。
当 InfoQ 询问 Simon Stewart 为何在决定合并项目两年之后才发布 Selenium 2,他表示:
这是一个很好的问题。有很多可能的原因,但是我认为关键一点在于我们在一切准备就绪之后发布了 2.0 版。直到最近 WebDriver API 依然不是非常成熟,你会看到 RC 里面有些方法被弃用并最终删除。还有一些开放的问题需要解决。过去几个月中我的主要工作是稳定 WebDriver 并修补问题,而不是新功能。虽然我们知道 2.0 不会完美,但是希望它尽可能的稳定、高效和讨人喜欢。
有关 Selenium 2 和 WebDriver 的更多信息,请查看 Selenium 文档—— Selenium 2.0 和 WebDriver 和 WebDriver FAQ 。
评论