说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家!
文章目录
一、Selenium 简介
1.什么是 Selenium
-
Selenium 是一个用于测试 Web 应用程序(B/S架构)的自动化工具。
√ Selenium 测试直接运行在浏览器中,就像真正的用户在操作一样。 -
主要功能
√ 测试系统功能
✰ 创建回归测试检验软件功能和用户需求。
√ 测试与浏览器的兼容性
✰ 测试应用程序看是否能够很好得工作在不同浏览器和操作系统之上。
2.Selenium 的版本
2.1 Selenium Core
- 2004 年,在 ThoughtWorks 公司,Jason Huggins 为了减少手工测试的工作量,自己实现了一套基于 JavaScript 语言的代码库,使用这套库可以进行页面的交互操作,并且可以重复地在不同浏览器上进行各种测试操作。通过不断地改进和优化,这个代码库逐步发展成 Selenium Core。
√ Selenium 开源、免费,甚至可以根据自己的使用需求来进行深入的定制化,改写其原有的一些功能。
2.2 Selenium RC
- 同时 Bea, Dan Fabulich 和 Nelson Sproul 等人修改架构为独立服务模式,期间有多位开发人员加入开发并推出了 Selenium RC 和 Selenium-IDE。
√ Selenium RC(Remote Control)即 Selenium 1
✰ 支持更多的浏览器,支持更多的编程语言(如 Java、JavaScript、Ruby、PHP、Python、Perl 和 C#)
√ Selenium IDE(集成开发环境)
✰ Firefox 插件,需要联网下载,早先支持脚本导出。
✰ 提供图形界面来录制和回放脚本。
✰ 此插件只是用来做原型的工具,并不希望测试工程师使用此工具来运行大批量的测试脚本。
2.3 Selenium WebDriver
- 简称 WebDriver,即 Selenium 2
√ 2006 年,Google 的工程师 Simon Stewart 开启了一个叫作 WebDriver 的项目,此项目可以直接让测试工具调用浏览器和操作系统本身提供的内置方法,以此来绕过 JavaScript 环境的沙盒限制, WebDriver 项目的目标就是为了解决 Selenium 的痛处。2008 年,Selenium 和 WebDriver 这两个项目进行了合并,也就是我们现在常常看到的 Selenium WebDriver(简称 WebDriver)。
√ 提供了极佳的特性,如面向对象 APl,提供 Selenium1 的接口用于向下兼容。
3.Selenium 支持的浏览器
- Google Chrome
- IE6、7、8、9、10 和 11
- Mac 操作系统的 Safari 默认版本均支持
- Firefox 的大部分版本
- Opera
- HtmlUnit
- Android 手机操作系统的默认浏览器
- iOS 手机操作系统的默认浏览器
4.Selenium 的原理
-
WebDriver 直接利用浏览器的内部接口来操作浏览器。
√ 对于不同平台中的不同浏览器,必须依赖浏览器内部的 Native Component(原生组件)来实现把 WebDriverAPI 调用转化为浏览器内部接口的调用。 WebDriver 使用系统的内部接口或函数,首先要找到这个元素的坐标位置,并在这个坐标点触发一个鼠标左键的单击操作。由此可以看出,WebDriver 能更好地模拟真实的环境,仅能测试那些可见的页面元素。 -
WebDriver 能够实现与浏览器进行交互,在目标浏览器里启动一整套 Web Service,这套 Web Service 使用了 Selenium 自己设计定义的协议,名字叫做 The WebDriver Wire Protocol。
✰ WebDriver Wire 协议是通用的,不管是 FirefoxDriver 还是 ChromeDriver,启动之后都会在某一个端口启动基于这套协议的 Web Service。之后 HTTP request 的 body 中,会以 WebDriver Wire 协议规定的 JSON 格式的字符串来告诉 Selenium 我们希望浏览器接下来做什么事情。
√ 采用 Client-Server 模式
✰ 客户端发送一个 requset ,服务器端返回一个 response 。 Client 是调用 WebDriverAPI 的机器,Server 是运行浏览器的机器。
✰ 服务器端需要维护浏览器的 Session,从客户端发过来的请求头中包含了 Session 信息,服务器端将会执行对应的浏览器页面。
√ WebElement 是 WebDriverAPI 中的对象,代表页面上的一个元素。
5.Selenium2(WebDriver)的优点
-
Selenium 必须操作真实的浏览器,但是 WebDriver 可以使用 HtmlUnit 进行测试,在不打开浏览器的情况下进行快速测试。
-
WebDriver 基于浏览器的内部接口实现自动化测试,更接近用户使用的真实情况。
-
WebDriver 提供了更简洁的面向对象 API,提高了测试脚本的编写效率。
-
WebDriver 在使用过程中无须单独启动 Selenium Server。