selenium学习笔记——selenium RC工作原理及部署
selenium RC的实现原理
selenium RC的实现原理如下图所示:
https://mp.****.net/postedit
selenium RC主要由两部分组成:selenium Server+Client Libraries。其中Selenium Server负责控制浏览器的行为。而Client Libraries则是给测试人员编写测试案例时用来控制selenium Server的库。
selenium1的自动化执行步骤如下:
- 测试人员基于Selenium支持的编程语言编写好测试脚本程序。
- 测试人员执行测试程序。
- 测试脚本程序发送访问网站的HTTP请求给Remote Control Server(RC)。
- RC 收到请求后,访问被测试网站并获取网页数据内容,并在网页中插入Selenium Core的JavaScript代码库,然后返回给测试人员执行测试的浏览器。
- 测试脚本在浏览器内部再调用selenium Core来执行测试代码逻辑,记录测试结果,完成测试。
要理解以上步骤的执行,首先要理解以下概念:
1、同源策略
同源策略是浏览器的JavaScript安全机制。其目的是确保一个站点的内容不会被另一个站点的脚本所访问。浏览器访问了某个域名的网站后,会打开此浏览器的网页,获取此网站的网页内容。网页内容中包含了要在网页本身里面执行的JavaScript语句或外部引用的JavaScript文件,浏览器会执行属于此域名下的JavaScript语句和文件。如果外部引用的JavaScript文件URL和点钱网页的域名不一致,那么浏览器会拒绝执行此JavaScript中的代码。例如:在浏览器一个选项卡中打开网站A,在另一个选项卡中打开网站B。网站B页面是不能操作网站A页面的内容。
同源:相同的协议、端口、域名
Selenium 1工具的核心部分是基于JavaScript代码库来实现的,这个库默认地和被测网站分离,它的URL和被测网站的域名是不一致的,那么selenium 1的JavaScript库是肯定会被禁止直行的,这样就无法实现对网站的自动化测试了。
2、代理注入
为了绕过浏览器的安全机制,selenium 1使用了代理方法来解决这个问题。selenium Server 像客户端配置的HTTP代理一样工作,它位于浏览器和待测系统之间。接着其伪造待测系统的URL代理作为第三者,在双方间传递信息,它表现的像一个“web服务器”,想浏览器传递待测系统。作为代理selenium Server,它拥有篡改待测系统真实URL的能力。Selenium Server以代理的形式存在,通过修改WebSite的源信息,从而达到欺骗浏览器的目的,就这样,Selenium RC就轻松绕过了同源策略。
selenium1代理模式的实现机制如下:
- 执行测试脚本,脚本向Selenium Server发起请求,要求和Selenium Server建立链接。
- Selenium Server的Launcher启动浏览器,向浏览器中插入Selenium Core的JavaScript代码库,并把浏览器的代理设置为Selenium Server的Http Proxy,确保后续Core的脚本域被访问的网站的脚本同源。
- 测试脚本向seleniumServer发送Http请求,Selenium Server对请求进行解析,然后通过Http Proxy发送JS命令通知Selenium Core发送JS命令通知Seleniim Core执行操作浏览器的请求。
- Selenium Core收到指令后,执行测试脚本里指定的网页操作命令。
- 浏览器收到新的请求信息,于是发送Http请求给Selenium给Selenium Core里的Http Proxy,请求新的Web页面。(因为第二步中,selenium Server在启动浏览器的时候,已经把浏览器的代理地址设定为Selenium Server的Http Proxy)
- Selenium Server接收到请求后,自行重组http请求,向应用服务器发送请求并获取返回的web页面。
- Selenium Server的Http Proxy把接收到的Web页面返回给浏览器。
通过以上步骤,selenium1成功1绕过同源策略,实现基于代码库在被测试网页进行各种自动化测试操作。
selenium RC的环境配置
虽然webDriver出现后,不建议再使用selenium RC的方法来进行自动化测试。但是不排除以前一些旧项目的脚本是使用selenium RC进行编写,后续需要继续维护。因此还是介绍一下selenium RC的环境配置。具体的配置步骤,网上已经有很多很详细的介绍,具体请参考:
http://www.cnblogs.com/fnng/archive/2011/10/19/2217506.html