什么是selenium?
一套软件工具,用来支持不同的自动化测试方法。
开源软件:可以根据需要来增加或者重构工具的某些功能
跨平台:linux windows mac
核心功能就是可以在多个浏览器上进行自动化测试
支持多种编程语言
目前已经被google、百度、腾讯等公司广泛使用
能够实现类似商业工具的大部分功能,并且还实现了商业工具不能支持的功能。
selenium的发展历史
2004年在 ThoughtWorks 公司,一个叫做 Jason Huggins 为了减少手工测试的工作,自己写了一套 JavaScript 的库,这套库可以进行页面交互,并且可以重复的在不同浏览器上进行重复的测试操作。
这套库后来变为了 Selenium Core,为Selenium Remote Control (RC) 和 Selenium IDE提供了坚实的核心基础能力。
Selenium 的作用是划时代的,因为他允许你使用多种语言来控制浏览器。
浏览器对JS的安全限制也对selenium的发展带来了困扰,并且web程序也越来越强大,特性也越来越多,都对selenium的发展带来了不少困难。
2006年Google的工程师Simon Stewart开启了一个叫做WebDriver的项目,此项目可以直接让测试工具使用浏览器和操作系统本身提供的方法,借此来绕过JS环境的沙盒效应。WebDriver项目目标就是为了解决selenium的痛处。
2008年,Selenium和Webdriver这两个项目进行了合并,Selenium 2.0出现了,也就是大家常说的WebDriver
2016 年,Selenium 3 诞生。移除了不再使用的 Selenium 1 中的 Selenium RC,并且官方重写了所有的浏览器驱动。
Selenium的工具套件
Selenium 2(Selenium WebDriver)提供了极佳的测试工具特性,例如:关联的面向对象API
Selenium 1(Selenium RC or Remote Control)支持更多的浏览器,支持更多的编程语言(Java,JavaScript,Ruby,PHP,Python,Perl and C#)
Selenium IDE(集成开发环境)是Firefox的插件,有图形界面来录制和回放脚本。此插件只是用来做原型工具,并不希望你使用这个工具来运行所有的测试脚本。
Selenium Grid可以并行的在多个测试环境执行测试脚本,实现脚本的并发测试执行。缩短大量测试脚本集合的执行时间
Selenium 1 和WebDriver的关系
WebDriver是Selenium 1 的升级版本,也可以理解为两个不同的产品
WebDriver相比Selenium 1 来说,可以更好地绕过JS的限制、API也更易于使用。
Selenium 1 比WebDriver支持更多的浏览器
WebDriver可以实现向下兼容Selenium 1 的脚本
Selenium 1.0 的工作原理
Selenium 1.0 组成:
(1)Selenium IDE:
一个firefox的plug-in,可以录制和回放并保存test cases,测试用例为html格式
(2)Selenium Core:
整个测试机制的核心部分,即有assertion(断言)机制的test suite runner。它由一些纯js代码组成,可以运行在windows/linux的不同browser上
(3)Selenium Remote Control(RC):
一个代理与控制端,可代替Selenium core / Selenium IDE的client端(相当于通过编程来实现一切),是支持多语言的。
Selenium 1.0的执行过程
1 执行测试脚本,要启动某个浏览器
2 脚本把打开浏览器的命令发给RC
3 RC的launcher打开了指定的浏览器,可能是ie,chrome,firefox。。。。
4 启动浏览器之后,访问脚本指定的网址
5 浏览器(设置的代理:RC)发出请求网页的请求,给RC
6 RC收到请求的url(被测试对象的网址),RC去真正请求url对一个的网页内容
7 被测试服务器返回所有的html,css,js等内容给RC
8 RC拿到了之后,注入selenium Core
9 RC将注入selenium core的全部网页内容发给了浏览器
10 测试脚本中的其他测试逻辑,均通过操作selenium core来实现。
71281621