概述
Selenium的最大变化是包含了WebDriver API。使用Selenium服务器本地或在远程计算机上以用户身份本地驱动浏览器,标志着浏览器自动化方面的飞跃。
Selenium WebDriver与RC的作用相同,并且包含了原始的1.x绑定。它指的是语言绑定和各个浏览器控制代码的实现。这通常被称为WebDriver 或有时被称为Selenium 2。
Selenium 1.0 + WebDriver = Selenium 2.0
- WebDriver采用更简单,更简洁的编程接口设计,同时解决了Selenium-RC API中的一些限制。
- 与Selenium 1.0相比,WebDriver是一个紧凑的面向对象的API。
- 它更有效地驱动浏览器并克服了影响我们功能测试覆盖范围的Selenium 1的局限性,例如文件上载或下载,弹出窗口和对话框障碍。
- WebDriver克服了Selenium RC的 单主机起源策略的限制。
如下图所示,Selenium组件和测试自动化工具的一些组件关系,让您有一个全面的了解。
Selenium WebDriver组成
使用WebDriver构建测试套件需要您理解并有效地使用许多不同的组件。
WebDriver 术语
- API:应用程序编程接口。这是用于操作WebDriver的一组“命令”。
- Library:包含API和实现它们所需的代码模块。Library跟特定的种语言绑定,例如Java的.jar文件,.NET的.dll文件等。
- Driver:负责控制实际的浏览器。大多数驱动程序由浏览器供应商自己创建的。驱动程序通常是使浏览器本身在系统上运行的可执行模块,而不是在执行测试套件的系统上运行。(尽管这些可能是相同的系统。)注意:有些人将驱动程序称为代理。
- Framework(框架):用作WebDriver套件支持的附加库。这些框架可能是测试框架,如JUnit或NUnit。它们也可能是支持自然语言功能的框架,如Cucumber或Robotium。框架也可以编写并用于操作或者安装被测系统,数据预制,测试数据库等等。
WebDriver各部件作用及分部
直接通信:
WebDriver至少可以通过驱动程序与浏览器进行通信。通信是两种方式:WebDriver通过驱动程序将命令传递给浏览器,并通过相同的路径返回信息。
这种驱动程序与浏览器有特定的对应关系:例如适用于Google Chrome / Chromium的ChromeDriver,适用于Mozilla Firefox的GeckoDriver等。驱动程序与浏览器运行在同一系统上。这可能是,也可能不是,测试本身正在执行的系统。
远程通信:
RemoteWebDriver在与驱动程序和浏览器相同的系统上运行。
远程通信也可以使用Selenium Server或Selenium Grid进行,两者都与主机系统上的驱动程序通信
Framework框架的位置
WebDriver只做一件事情:通过上述任何方法与浏览器进行通信。WebDriver和测试信息没有关系:它不知道如何比较事物,断言传递或失败,亦不知道关于报告或Given/When/Then语法的事情。
测试用例信息是各种框架发挥作用的地方。首先需要一个语言绑定相匹配的测试框架,例如NUnit for .NET,JUnit for Java,RSpec for Ruby等。
测试框架负责运行和执行WebDriver以及测试中的相关步骤。因此,您可以将其视为类似于以下图像。
像Cucumber之类的自然语言框架/工具可以作为下图中的测试框架框的一部分存在,或者它们可以将测试框架完全包装在它们自己的实现中