Selenium发展史
2004年Jason Huggins在ThoughtWorks公司开发内部的时间和费用(Time and Expenses)系统,该应用使用了大量的JavaScript。虽然IE在当时是主流浏览器,但是ThoughtWorks内部员工还使用一些其他浏览器(特别是Mozilla系列),当员工在自己的浏览器中无法正常运行T&E系统时就会提交bug。而当时开源测试工具要么关注单一浏览器(通常是IE),要么是模拟浏览器(如HttpUnit),而购买商业工具授权的成本会耗尽T&E小型内部项目的有限预算,所以这些测试工具都无法在项目中满足要求。

Jason和他所在的团队决定采用Javascript自己开发一个测试工具来验证T&E系统的行为,从而发起了Selenium项目,当时他们受到FIT(Framework for Integrated Test)的启发,使用基于表格的语法替代了原始的Javascript,这个功能对于编程经验有限的人来说是福音,可以在HTML文件中使用关键字驱动的方式来编写测试。该工具最初称为“Selenium”,后来称为“Selenium Core”,在2004年基于Apache 2授权发布。


因为Selenium使用纯JavaScript开发,它最初设计要求开发人员把准备测试的应用和Selenium Core、测试脚本部署在同一台服务器上,以避免违反浏览器的安全规则和JavaScript沙箱策略。但是实际情况是会遇到被测试系统是多层架构或者分布式架构等,没办法每次都把测试脚本和selenium Core和被测试应用放在同一台机器上。另外没有很好支持Selenium的IDE开发工具,针对HTML开发测试脚本整个过程非常痛苦。


因为Selenium没有能很好以上及JavaScript沙箱策略的问题,2006年Google的工程师Simon Stewart发起了WebDriver的项目,也就是Selenium2,它把Selenium与WebDriver合并,通过WebDriver解决了Selenium存在的缺点(例如能够绕过JavaScript沙箱,有很好的API),另外一方面增强了WebDriver可以支持广泛的浏览器。到此Selenium 的发展经历了三个阶段。


第一个阶段:

Selenium1: 运行Selenium1.0程序之前,得先启动Selenium Server端(Selenium remote control),我们简称 RC。RC 主要包括三个部分:launcher,http proxy,Selenium core。其中 Selenium Core 是被 Selenium server 嵌入到浏览器页面中的,Selenium core 内部是一堆 JavaScript 函数构成,通过调用这些函数来实现对浏览器的各种操作。


第二阶段:

Selenium2:合并了Selenium和webdriver, Webdriver是一套面向对象的API。相比selenium1而言,Selenium WebDriver能够进行更有效的功能测试的覆盖,比如文件上传、下载,弹出窗和对话框的问题,同时也克服了webdriverSelenium RC的单主机同源策略(同源策略是由Netscape提出的一个著名的安全策略。现在所有支持JavaScript 的浏览器都会使用这个策略。所谓同源是指,域名,协议,端口相同。

当一个浏览器的两个tab页中分别打开来微博和淘宝的页面,当浏览器的微博tab页执行一个脚本的时候会检查这个脚本是属于哪个页面的,即检查是否同源,只有和微博同源的脚本才会被执行。如果非同源,那么在请求数据时,浏览器会在控制台中报一个异常,提示拒绝访问。)的限制的问题。


第三个阶段:

Selenium3:它是2016年10月份发布,现在默认安装都是Selenium3了, Selenium3在 Selenium2 的基础上做了一些调整,明显区别在于Selenium2 对Firefox的支持最高只支持46及以下版本,selenium3支持47以上版本, 但需要下载 geckodriver.exe作为代理驱动。现在安装的都是Selenium3。


Selenium安装
Selenium安装环境

  • 操作系统:win8 64位
  • Firefox54.0.1(64位)
  • Python:3.5.4.
  • Selenium:Selenium3
  • Firefox驱动geckodrive
  • PyCharm:pycharm-community-2017.2.4.

安装python

1、通过浏览器打开python官网下载,页面打开后如下图,点击Windows:

Selenium介绍与环境配置

2、选择点击Python3.5.4 2017-8-8下面的Download Windows x86-64 executable installer,下载相应版本的Python:

Selenium介绍与环境配置

3、下载完成后如下图所示

Selenium介绍与环境配置

4、双击exe文件进行安装,如下图,勾选上Install launcher for all users(recommended)以及add python 3.6 to Path(切记要勾选打钩的框),然后再点击Customize installation进入到下一步:

Selenium介绍与环境配置

5、默认全选,点击Next

Selenium介绍与环境配置

6、对于下图中,可以通过Browse进行自定义安装路径,我选择安装在C盘Python35目录下。然后点击Install进行安装,点击install后便可以完成安装了。

Selenium介绍与环境配置

7、检查python是否安装成功,在命令窗口中输入python命令进行查询,如显示下图中信息则表示成功了

Selenium介绍与环境配置

 

安装selenium3


1、联网状态下进入cmd,在c:\ Python35\Scripts下输入命令: python –m pip install selenium 按回车。(如果将来卸载就输入pip install -U selenium命令即可)

Selenium介绍与环境配置

2、安装Firefox浏览器驱动geckodrive

下载解压后将geckodriver.exe拷贝到Python的安装目录。 说明:selenium官方加上第三方宣布支持的驱动有很多种;除了PC端的浏览器之外,还支持iphone、android的driver。下面简单说下selenium支持的各种driver的用途与说明:

1)Selenium可支持的PC浏览器驱动包括:

  • FF driver【包含在各自语言的客户端里】
  • safari driver【包含在selenium server中】
  • IE driver
  • chrome driver 【第三方】
  • opera driver【第三方】
  • selenium可支持的伪浏览器驱动:
  • PhantomJS Driver【第三方】
  • HtmlUnit Driver【包含在selenium server中】

selenium可支持的移动端驱动:

  • Windows Phone driver 【第三方】
  • Selendroid -Selenium for Android【第三方】
  • ios-driver 【第三方】
  • Appium 支持iphone、ipad、android、FirefoxOS【第三方】

上述的所有驱动可以直接通过各自语言客户端来调用,PC端的driver都是基于浏览器的,主要分为2种类型:
第一种是真实的浏览器driver:

比如:safari、ff都是以插件形式驱动浏览器本身的;ie、chrome都是通过二进制文件来驱动浏览器本身的;
这些driver都是直接启动并通过调用浏览器的底层接口来驱动浏览器的,因此具有最真实的用户场景模拟,主要用于进行web的兼容性测试使用。
第二种是伪浏览器driver:

selenium支持的伪浏览器包括htmlunit、PhantomJS;他们都不是真正的在浏览器、都没有GUI,而是具有支持html、js等解析能力的类浏览器程序;这些程序不会渲染出网页的显示内容,但是支持页面元素的查找、JS的执行等;由于不进行css及GUI渲染,所以运行效率上会比真实浏览器要快很多,主要用在功能性测试上面。
htmlunit是java实现的类浏览器程序,包含在selenium server中,无需驱动,直接实例化即可;其js的解析引擎是Rhino
PhantomJS是第三方的一个独立类浏览器应用,可以支持html、js、css等执行;其驱动是Ghost driver在1.9.3版本之后已经打包进了主程序中,因此只要下载一个主程序即可;其js的解析引擎是chrome 的V8。