概述
Selenium WebDriver是Selenium Tool套件中最重要的组件。 最新版本“Selenium 2.0”与WebDriver API集成,提供更简单,更简洁的编程接口。
如下图所示,Selenium组件和测试自动化工具的一些组件关系,让您有一个全面的了解。
Selenium WebDriver最初作为Selenium v2.0的一部分推出。 Selenium的初始版本即Selenium v1仅由IDE,RC和Grid组成。 但是,随着Selenium v3的发布,RC已被弃用并转移到旧版程序包。
在WebDriver中,可以使用任何支持的编程语言开发测试脚本,并且可以在大多数现代Web浏览器中直接运行。WebDriver支持的语言包括C#,Java,Perl,PHP,Python和Ruby。
在学习Selenium WebDriver的概念之前,应该精通至少其中一个支持的编程语言。 目前,Selenium Web驱动程序最受Java和C#欢迎。 在本教程中,将Selenium与java一起使用。
与Selenium RC相比,Selenium WebDriver执行速度更快,因为它可以直接调用Web浏览器。 另一方面,RC需要RC服务器与浏览器进行交互,所以相对慢一些。
WebDriver有一个内置的Firefox驱动程序(Gecko Driver)实现。 对于其他浏览器,需要插入其浏览器特定的驱动程序以进行通信并运行测试。
最常用的WebDriver如下:
- Google Chrome Driver
- Internet Explorer Driver
- Opera Driver
- Safari Driver
- HTML Unit Driver (一个特殊的无头驱动程序)
Selenium WebDriver架构
Selenium WebDriver API提供编程语言和浏览器之间的通信工具。下图显示了Selenium WebDriver的体系结构表示。
WebDriver架构有四个基本组件:
- Selenium语言绑定
- JSON有线协议
- 浏览器驱动
- 真正的浏览器
Selenium语言绑定/Selenium客户端库
Selenium开发人员已经构建了语言绑定/Selenium客户端库以支持多种语言。 例如,如果要在java中使用浏览器驱动程序,请使用java绑定。 所有受支持的语言绑定都可以从Selenium的官方网站( https://www.seleniumhq.org/download/#client-drivers )下载。
JSON有线协议
JSON(JavaScript Object Notation)是一种用于在Web上交换数据的开放标准。 它支持对象和数组等数据结构。 因此,从JSON编写和读取数据很容易。
JSON Wire Protocol提供了一种在服务器和客户端之间传输数据的传输机制。 JSON Wire Protocol是各种REST Web服务的行业标准。
浏览器驱动
Selenium使用特定于每个浏览器的驱动程序,以便与浏览器建立安全连接,而不会泄露浏览器功能的内部逻辑。 浏览器驱动程序也特定于用于自动化的语言,如Java,C#等。
当使用WebDriver执行测试脚本时,将在内部执行以下操作。
- 生成HTTP请求并将其发送到每个Selenium命令的浏览器驱动程序。
- 驱动程序通过HTTP服务器接收HTTP请求。
- HTTP Server决定执行在浏览器上执行的指令的所有步骤。
- 执行状态将发送回HTTP Server,随后将其发送回自动化脚本。
Selenium WebDriver支持的浏览器:
- Internet Explorer
- Mozilla Firefox
- Google Chrome
- Safari
Selenium WebDriver一些最重要的功能特性是
-
多浏览器支持 :Selenium WebDriver支持各种Web浏览器,如Firefox,Chrome,Internet Explorer,Opera等等。它还支持一些非传统或罕见的浏览器,如HTMLUnit。
- 多编程语言支持:WebDriver还支持大多数常用的编程语言,如Java,C#,JavaScript,PHP,Ruby,Pearl和Python。 因此,用户可以基于自己的能力选择任何一种受支持的编程语言并开始构建测试脚本。
-
速度:与Selenium Suite的其他工具相比,WebDriver的执行速度更快。与RC不同,它不需要任何中间服务器与浏览器通信; 此工具直接与浏览器通信。
- 简单命令:Selenium WebDriver中使用的大多数命令都易于实现。 例如,要使用以下命令在WebDriver中启动浏览器:
- WebDriver driver = new FirefoxDriver(); //(Firefox浏览器)
- WebDriver driver = new ChromeDriver(); //(Chrome浏览器)
- WebDriver driver = new InternetExplorerDriver(); //(Internet Explorer浏览器)
- Java
-
WebDriver方法和类 :WebDriver提供多种解决方案来应对自动化测试中的一些潜在挑战。WebDriver还允许测试人员通过动态查找器处理复杂类型的Web元素,如复选框,下拉列表和警报。