Selenium 1
1. Selenium Core:要求同源,即待测试的产品、Selenium Core、测试脚本均部署到同一台服务器上才可进行自动化测试;
2. Selenium 1 即Selenium RC(SeleniumRemote Control),可同源,主要包括两个部分:(1)Selenium RC Server(2)提供各种编程语言绑定的客户端驱动;
3. Selenium RC的核心是SeleniumCore(Selenium Core实际上是一系列JavaScript函数,使用内置的JavaScript翻译器来翻译和执行Selenium Command);
4. WebDriver设计理念:将端到端的测试与底层具体的测试工具隔离开,采用Adapter适配器来达到目标;
5. Selenium RC与WebDriver差异:API组织不同
Selenium RC | WebDriver |
基于字典方式的API | 更加面向对象的API |
Selenium Core基本上是JavaScript应用,主要运行在浏览器的安全沙箱中 | 原生绑定到浏览器中并绕开了浏览器的安全模式,代价是框架本省的开发投入显著增加,每个浏览器的WebDriver都需要单独实现 |
6. Selenium WebDriver:Selenium RC和WebDriver的合并体;支持多语言绑定,支持PC上传统浏览器Chrome、Firefox、IE,也支持嵌入式设备上基于Web-kit内核的浏览器包括Android、IOS上的浏览器等;
7. Selenium 1 使用方式:
(1) 根据API(客户端驱动所提供)编写测试用例脚本
(2) 打开浏览器,此时Selenium RC Server绑定Selenium Core并自动将它嵌入浏览器中;
(3) 客户端驱动持续执行测试用例脚本并发送特定的命令(Selenium Command)到Selenium RC Server;
(4) Selenium RC Server解释SeleniumCommand,并触发Selenium Core执行对应的JavaScript代码来完成相应操作;
(5) 浏览器上所有的请求和响应都通过Selenium RC的HTTP代理与实际的Web应用服务器进行交互,并且Selenium RC一旦收到响应就将页面传递给浏览器。会篡改源,使之看似与Selenium Core同源;
(6) 浏览器接到Web页面并展示;
Selenium 2
1. Selenium 2:将WebDriverAPI集成进Selenium RC;不与任何的测试框架绑定,便于与其他测试工具进行集成,如JUnit或TestNG等。
2. WebDriver的实现与具体浏览器相关:
(1) htmlUnit Driver:目前运行速度最快和最轻量级的WebDriver实现;
优点:纯java实现,容易夸平台使用;
(2) Firefox Driver:最容易配置和使用的WebDriver(所有的准备工作都伴随java语言绑定的客户端被打包在一起),下载WebDriver Java Client Driver即可;
(3) Chrome Driver:针对GoogleChrome,可跨平台使用;
(4) IE Driver:只能运行在Windows操作系统上,相较于ForefoxDriver和Chrome Driver,运行速度略显缓慢
3. Selenium 2可通过WebDriver来测试手机应用,无论在模拟器上还是真实设备上。Selenium1则不可;
Selenium 3
1. Selenium 3
(1) 移除原有的Selenium Core的实现部分
(2) Selenium RC的API也将去除;
(3) 所有的Driver在消息响应中统一使用状态字符串,而不是状态码
(4) 为基于Html格式的测试集合提供一个新的运行器,
(5) 将Selenium 3的分支和包含Selenium RC的代码分支分开进行编译打包
(6) 在WebDriver.quit()方法后如果还使用WebDriver,则会报错IllegaStateException
(7) 允许多次调用WebDriver.quit()方法
(8) 重构WebDriver的构造方法
(9) 架构迁移到Netty或者Webbit服务器上
SeleniumIDE
Selenium IDE优点:
Selenium IDE缺点:
SeleniumGrid
1. Selenium Grid优点:
(1)运用多个机器同事并列运行,目的是加快测试用例的运行速度,减少测试运行总时间;
(2)可被用于在多种运行环境中进行测试,即并行测试多种浏览器
(3)可对相同类型和版本的浏览器建议测试矩阵
(4)以上列举的并行测试浏览器的例子可结合使用,用于测每种类型和版本的浏览器的多个实例;
2. Selenium Grid包含一个Hub和至少一个Node;
Selenium与嵌入式
(1)Selenium WebDriver可采用自动化方式来测试嵌入式设备上基于浏览器应用的能力(网站可在PC+手机上的浏览器上正常访问)
(2)WebDriver为手机设备提供了专门针对触摸屏的API;可模拟操作触摸屏的真实动作,入单击、触划、滚动、长按等,也可以屏幕旋转,以及与HTML5发特性进行交互,如本地存储、会话存储和应用程序缓存等
Selenium与云计算
1. Selenium Labs:基于Selenium且比较流行的云测试平台;
2. Selenium labs可在云端完成兼容性矩阵的测试而不需要自己购买大量的硬件并自行维护成千上万台测试虚拟机
3. Appium:针对嵌入式系统且基于WebDriver的自动化测试框架。支持Web应用、原生的app程序、Hybrid app的测试;