Selenium自动化测试框架入门整理
关注嘉为科技,获取运维新知
本文主要针对Selenium自动化测试框架入门整理,只涉及总体功能及框架要点介绍说明,以及使用前提技术基础要求整理说明。作为开发人员、测试人员入门参考。
本文参考:Selenium框架最新技术规范及相关资料
简介
Selenium也是一款同样使用Apache License 2.0协议发布的开源框架。Selenium也是一套完整的Web应用程序测试系统工具,它包含了:
- Selenium的核心Selenium Core基于JsUnit,完全由JavaScript编写,因此可运行于任何支持JavaScript的浏览器上;
- 测试的录制(Selenium IDE);
- 编写及运行(Selenium Remote Control)(3.X移除了);
- 测试的并行处理(Selenium Grid);
- Selenium2.X包含该了WebDriver和SeleniumRC(兼容以前版本)。Selenium3.X只包含WebDriver,移除了SeleniumRC。
Selenium整体产品结构如下:(3.x以后版本去除了SeleniumRC)
Selenium IDE:
是一个用于构建脚本的初级工具,其实是FireFox的一个插件,拥有一个易于使用的界面。它拥有记录功能,能够记录用户执行的操作,并可以导出为可重复使用的脚本。如果没有编程经验,可以通过Selenium IDE来快速熟悉Selenium的命令。该工具实际使用不多。Selenium-core 是使用HTML的方式来编写测试脚本,你也可以使用 Selenium-IDE来录制脚本,但是目前Selenium-IDE只有 FireFox 版本。
Selenium-RC(Selenium3.X 移除):
selenium-remote control 缩写,是使用具体的语言来编写测试类。Selenium RC支持多种不同的语言编写自动化测试脚本,通过SeleniumRC的服务器作为代理服务器去访问应用,从而达到测试的目的。主要包含以下两大部分:
- ClientLibraries库主要用于编写测试脚本,用来控制SeleniumServer的库。
- SeleniumServer负责控制浏览器行为。SeleniumServer包含三部分:Launcher,Http Proxy和Core。其中,Selenium Core是被Selenium Server嵌入到浏览器页面中的,其实SeleniumCore就是一堆JavaScript函数的集合,即通过这些JavaScript函数,我们才可以实现用程序对浏览器进行操作。Launcher用于启动浏览器,把Selenium Core加载到浏览器页面当中,并把浏览器的代理设置为SeleniumServer的HttpProxy。
WebDriver:
Selenium2.x提出了WebDriver的概念之后,它提供了完全另外的一种方式与浏览器交互。那就是利用浏览器原生的API,封装成一套更加面向对象的SeleniumWebDriver API,直接操作浏览器页面里的元素,甚至操作浏览器本身(截屏,窗口大小,启动,关闭,安装插件,配置证书之类的)。由于使用的是浏览器原生的API,速度大大提高,而且调用的稳定性交给了浏览器厂商本身,显然是更加科学。然而带来的一些副作用就是,不同的浏览器厂商,对Web元素的操作和呈现多少会有一些差异,这就直接导致了Selenium WebDriver要分浏览器厂商不同,而提供不同的实现。例如Firefox就有专门的FirefoxDriver,Chrome就有专门的ChromeDriver等等。(甚至包括了AndroidDriver和iOS WebDriver)
Selenium Grid:
实现测试的并行处理。
基于Selenium进行测试的方式及流程
Selenium RC方式(3.X以后版本移除该方式):
- 测试用例通过Http请求建立与 Selenium-RC server 的连接;
- Selenium RC Server 驱动一个浏览器,把Selenium Core加载入浏览器页面当中,并把浏览器的代理设置为Selenium Server的Http Proxy;
- 执行用例向Selenium Server发送Http请求,Selenium Server对请求进行解析,然后通过Http Proxy发送JS命令通知Selenium Core执行操作浏览器的动作并注入 JS 代码;
- Selenium Core执行接受到的指令并操作;
- 当浏览器收到新的请求时,发送http请求;
- Selenium Server接收到浏览器发送的Http请求后,自己重组Http请求,获取对应的Web页面;
- Selenium Server中的Http Proxy把接受到的页面返回给浏览器。
WebDriver(目前主流方式):
Selenium 2.X启动SeleniumRC至今为止还保留着,应该是考虑到向前兼容。Selenium 3.X完成移除了SeleniumRC。
Selenium2.X增加了WebDriver,保持RC向前兼容。WebDriver项目是由Simon Stewart创建的,它是一个非常便捷的自动化测试工具。WebDriver对不同浏览器的处理方式和RC有着明显的不同,RC是不管什么浏览器都是JavaScript来处理,而WebDriver是选择浏览器最容易接受的语言来处理。比如,在IE中,C++最合适,在Firefox中, JavaScript最合适等等。通过灵活选择最合适的语言来处理多浏览器,我们可以很好的回避某些浏览器对JavaScript的安全限制。而且WebDriver不仅仅具有这些能力,它还能够调用操作系统API,尤其是当用户需要模拟鼠标和键盘进行真实的页面操作的时候,这项能力的作用尤为明显。
现在支持的WebDriver:AndroidDriver,ChromeDriver, FirefoxDriver, HtmlUnitDriver, EventFiringWebDriver,InternetExplorerDriver, IPhoneDriver, IPhoneSimulatorDriver, RemoteWebDriver。
Selenium Grid(目前主流的方式):
传统的无Grid的模式,只能在一台机器上进行测试。Selenium可以在上面两种方式下进行执行,第一种是每台机器都是一致的,第二种是可以指定特定的浏览器或者特定的操作系统执行。
自动化测试脚本编制要求
- 前提熟悉:HTML /XML/...
- 前提熟悉:XPath(XML路径语言 http://www.runoob.com/xpath/xpath-tutorial.html)
- 开发语言:Java/Python/C#/PHP/…,最起码熟悉一种开发语言。
- FIT模式:Selenium脚本(JS):命令用法 。
- Driver模式:库(不同语言有不同客户端)的熟练使用:方法、函数等。
- 可采用Selenium WebDriver + TestNG框架(TestNG 是一个测试 Java 应用程序的新框架)模式。
- 建立测试用例脚本的编制规范(针对WebDriver模式)
- 可利用Jenkins集成Selenium Grid + WebDriver,及 Selenium Report插件。
测试结果报告展现方式
要结合其他框架的测试报告模板,例如TestNG的测试结果报告、ReportNg等;
Jenkins集成selenium,可利用 selenium report 插件输出;
可结合自主开发测试结果展现处理平台,关联到任务平台当中。
集成成本及方式
需进行Selenium脚本的学习以及相关技术的学习;
基于Selenium的WebDriver模式,测试用例的编制要求具备数据一种开发语言(主流模式);
如结合TestNG,则需熟悉Java。
我们可采用Jenkins + Selenium + TestNG + Selenium report (ReportNG) 集成的模式进行Web应用的自动化测试。在DevOps产品研发中,可融合封装使用Selenium进行WEB应用自动化测试。
如需深入了解,请在网络上参考官方的文档及相关资料等。
Selenium+蓝鲸,可以实现应用功能自动化拨测哦!点击文章查看是如何实现的?《分享 | 基于蓝鲸平台实现应用功能自动化拨测》
Selenium自动化测试框架入门整理的更多相关文章
- 《Selenium自动化测试实战:基于Python》Selenium自动化测试框架入门
第1章 Selenium自动化测试框架入门 1.1 Selenium自动化测试框架概述 说到目前流行的自动化测试工具,相信只要做过软件测试相关工作,就一定听说过Selenium. 图1-1是某企业 ...
- Python selenium自动化测试框架入门实战--登录测试案例
本文为Python自动化测试框架基础入门篇,主要帮助会写基本selenium测试代码又没有规划的同仁.本文应用到POM模型.selenium.unittest框架.configparser配置文件.s ...
- Selenium自动化测试框架介绍
Selenium自动化测试框架介绍 1.测试架构作用 a.可维护性 b.提高编写脚本效率 c.提高脚本的可读性 2.框架的几大要素: Driver管理,脚本,数据,元素对象,LOG,报告,运行机制,失 ...
- 《手把手教你》系列基础篇(七十五)-java+ selenium自动化测试-框架设计基础-TestNG实现DDT - 中篇(详解教程)
1.简介 上一篇中介绍了DataProvider如何传递参数,以及和一些其他方法结合传递参数,今天宏哥接着把剩下的一些常用的也做一下简单的介绍和分享. 2.项目实战1 @DataProvider + ...
- 《手把手教你》系列基础篇(七十六)-java+ selenium自动化测试-框架设计基础-TestNG实现DDT - 下篇(详解教程)
1.简介 今天这一篇宏哥主要是结合实际工作中将遇到的测试场景和前边两篇学习的知识结合起来给大家讲解和分享一下,希望以后大家在以后遇到其他的测试场景也可以将自己的所学的知识应用到测试场景中. 2.测试场 ...
- 《手把手教你》系列基础篇(七十七)-java+ selenium自动化测试-框架设计基础-TestNG依赖测试- 上篇(详解教程)
1.简介 今天主要是讲解和分享:TestNG中一个类中有多个测试方法的时候,多个测试方法的执行顺序或者依赖关系的问题.如果不用dependsOnMethods,testNG会自动根据@Test方法名称 ...
- PO模式在selenium自动化测试框架有什么好处
PO模式是在UI自动化测试过程当中使用非常频繁的一种设计模式,使用这种模式后,可以有效的提升代码的复用能力,并且让自动化测试代码维护起来更加方便. PO模式的全称叫page object model( ...
- 《手把手教你》系列基础篇(七十八)-java+ selenium自动化测试-框架设计基础-TestNG依赖测试- 中篇(详解教程)
1.简介 上一篇讲解了依赖测试的各种方法,今天继续讲解依赖测试的方法,这一篇主要是讲解和分享通过xml文件配置组名依赖方法( 主要是测试组的用法).废话不说,直接上干货. 2.实例 测试组:一个组可包 ...
- 《手把手教你》系列基础篇(八十)-java+ selenium自动化测试-框架设计基础-TestNG依赖测试-番外篇(详解教程)
1.简介 经过前边几篇知识点的介绍,今天宏哥就在实际测试中应用一下前边所学的依赖测试.这一篇主要介绍在TestNG中一个类中有多个测试方法的时候,多个测试方法的执行顺序或者依赖关系的问题.如果不用de ...
随机推荐
- Win32汇编学习(1):基本概念
背景知识 Windows 把每一个 Win32 应用程序放到分开的虚拟地址空间中去运行,也就是说每一个应用程序都拥有其相互独立的 4GB 地址空间,当然这倒不是说它们都拥有 4GB 的物理地址空间,而 ...
- Java 字符串拆分(拆分字符串)
String sourceStr = "1,2,3,4,5"; String[] sourceStrArray = sourceStr.split(","); ...
- P3167 [CQOI2014]通配符匹配
吐槽 本来是去写AC自动机的,然后发现数据范围每个串100000,有100个串(???),连塞进trie树里都塞不进去,玩个鬼的AC自动机啊,tag不要乱打啊 最后拿字符串hash+爆搜一发搜过去了. ...
- 消息队列之ActiveMQ简单环境搭建
准备: 环境:win7,Eclipse,jdk1.8 ActiveMQ版本:ActiveMQ 5.9.0 Release下载地址:http://activemq.apache.org/download ...
- Perl CGI编程
http://www.runoob.com/perl/perl-cgi-programming.html 什么是CGI CGI 目前由NCSA维护,NCSA定义CGI如下: CGI(Common Ga ...
- 【Java】【控制流程】
#栗子 丢手帕 & 菱形 & 金字塔import java.io.*;import java.util.*; public class Test_one { public static ...
- React Native组件之BackAndroid !安卓手机的物理返回键的使用
ok!在安卓手机上,当我们用物理返回键的时候,会以一次性的将程序退出来,这样是很不好的体验,所以就需要使用RN的物理返回键组件:BackAndroid,其原理也就是 分析路由,然后pop()这样! o ...
- 树莓派 无屏幕 安装Ubuntu系统 无头安装 无显示器 用网线
能看到此篇博客的人说明都尝试失败了,会发现内存卡刷入Ubuntu后,无法通过ssh操作树莓派.是因为官方的ubuntu系统在初次运行时需要设定一些东西,类似windows第一次启动也需要设置那样,如果 ...
- win10 下载安装eclipse
官网:https://www.eclipse.org 选择下载包 选择下载win 64版本 解压后目录结构如下: 点击运行eclipse
- 力扣(LeetCode)7.整数反转
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转. 示例 1: 输入: 123 输出: 321 示例 2: 输入: -123 输出: -321 示例 3: 输入: 120 输出: ...