Selenium 3 即将到来
Selenium 3 即将到来!当我写这篇文章时,我们认为“beta 4”将是正式 3.0 版本发布前的最后一个 beta 版本。我在这里告诉您有哪些变化,以及这对您的测试有何影响。
TL;DR
- WebDriver 用户只会发现错误修复,并且可以替换 2.x 版本。
- Selenium Grid 用户也会发现错误修复和简单的更新。
- WebDriver API 现在是 Selenium 项目唯一积极支持的 API。
- Selenium RC API 已被移动到“遗留”包。
- 为 Selenium RC 提供支持的原始代码已被 WebDriver 支持的代码替换,该代码也包含在“遗留”包中。
- 由于时间上的巧合,Mozilla 对 Firefox 进行了更改,这意味着从 Firefox 48 开始,无论您使用的是 Selenium 2 还是 3,都必须使用他们的 geckodriver 才能使用该浏览器。
更深入地了解
当我们在 2011 年发布 Selenium 2.0 时,我们引入了新的 WebDriver API,并鼓励大家开始迁移到这些 API。如果您使用的是 WebDriver API,那么 Selenium 3.0 是一个简单的直接升级。我们没有更改任何公共 WebDriver API,并且代码与上一个 2.x 版本基本相同。如果您使用的是 Selenium Grid,情况也一样:在大多数情况下,您只需放入新的 JAR(或将 Maven 依赖项更新为 3.0.0),就完成了。
如果更新到 Selenium 3 是如此平淡无奇,为什么我们称之为 Selenium 3.0?要回答这个问题,我首先需要提供一些历史,并告诉您一些关于 Selenium 在幕后如何工作的信息。Selenium 的第一个版本“仅仅”是一个非常复杂的 Javascript 框架,它在浏览器中运行并解释您可能熟悉的基于表格的测试(如果您使用 Selenium IDE)。我们称之为“Selenium Core”。这个 Javascript 框架构成了 Selenium RC 的原始实现的基础(Selenium API 的最旧集合,其中所有方法和函数都在 “Selenium” 接口上,并且已经弃用了一段时间)。随着时间的推移,现代 Web 测试的需求变得越来越复杂和精细,Selenium Core 现在比以前更无法满足这些需求。
在 Selenium 3.0 中,我们将删除原始的 Selenium Core 实现。如果您使用旧的 RC 接口,我们会提供一个由 WebDriver 支持的替代实现。这与自 Selenium 2 发布以来作为 Selenium 2 的一部分提供的“webdriver-backed selenium”相同。由于底层技术已从 Selenium Core 更改为 WebDriver,您可能会发现一些地方使用 RC 的现有测试会遇到问题。我们在迁移套件方面的经验是,这通常是一个系统性问题,可以通过最少的工程工作来解决(也就是说,问题通常被隔离在少数几个地方,并且可以重写这些地方以避免问题)。
我们还将从主下载中删除原始的 Selenium RC API。如果您是 Java 用户,并且需要使用它们来支持现有测试,那么您需要依赖 “org.seleniumhq.selenium:selenium-leg-rc:3.0.0”(或更高版本!)。强烈建议您不要这样做,除非您绝对需要。
如果您是使用表格格式运行从 IDE 导出的测试的用户,那么该项目现在提供了一个新的测试运行器供您使用,您可以从该项目的网站下载。它采用与旧运行器相同的参数,我们已尽最大努力确保测试的输出也保持不变。
在 Selenium 项目发布 Selenium 3.0 的同时,Mozilla 也在更改 Firefox 的内部结构,使其更加稳定和安全,但也导致社区提供的 Firefox Driver 不再工作。因此,如果您使用 Firefox 进行测试,则需要使用 geckodriver,它是一个可执行文件,类似于 chromedriver 和适用于 Edge 的 Microsoft WebDriver。即使您使用的是 Selenium 2,也需要开始使用 geckodriver —— 更改是在浏览器中,而不是在 Selenium 中。请注意,geckodriver 是基于不断发展的 W3C WebDriver 标准的 alpha 软件:每个人都在全力以赴为您提供最好的测试体验,但在使用 Firefox 进行测试时,无疑会出现一些坎坷。
此版本标志着 Selenium 提交者和社区的辛勤工作达到顶峰。我要感谢参与此过程的每一个人,以及世界各地的 Selenium 用户,他们为使该项目取得如此成功做出了巨大贡献。