在Selenium+JUnit自动化测试方案(一)中,介绍了Selenium和一种快速开始Selenium自动化测试的Firefox插件Selenium IDE。
本文将介绍一种完整的Selenium框架 Selenium RC。
Selenium RC 使用编程语言编写脚本,通过Selenium RC服务器作为代理服务器去访问应用从而达到测试的目的。
由于Selenium RC不再需要依附Firefox,所以其可以在其它更多的浏览器上进行测试。
Selenium RC的使用包括两部分:
第一部分是服务器。服务器下载后即可使用,记得开始跑脚本时把服务器打开。它是一个已经打包好的JAVA程序,运行 java -jar selenium-server.jar即可。
另一部分是脚本,脚本需要我们自己编写。它可以使用多种语言编写,如C#、Ruby、JAVA等,在这里我采用的是JAVA。它可以在多个测试框架上应用,比JUnit/Nunit,Testng等,这里采用的是Junit。在整个测试框架中,Selenium提供了封装好的Selenium接口与类,如果使用JUnit它同样提供了封装好的测试类。
Selenium IDE和Selenium RC对浏览器的支持情况比较
Selenium RC的框架
Selenium RC的程序文件同样包括两个部分。
Selenium Server:负责控制浏览器行为,它主要包括3个部分:Launcher,Http Proxy,Selenium Core。其中Selenium Core是被Selenium Server嵌入到浏览器页面中的。其实Selenium Core就是一堆JS函数的集合,就是通过这些JS函数,我们才可以实现用程序对浏览器进行操作。
Client Libraries:提供了编写测试用例控制Selenium Server所需的多种编程语言库。
Selenium RC的工作流程
测试用例(TestCase)通过Client Libraries的接口向Selenium Server发送Http请求,要求和Selenium Server建立连接。
Selenium Server的Launcher启动浏览器,把Selenium Core加载入浏览器页面当中,并把浏览器的代理设置为Selenium Server的Http Proxy。
测试用例通过Client Libraries的接口向Selenium Server发送Http请求,Selenium Server对请求进行解析,然后通过Http Proxy发送JS命令通知Selenium Core执行操作浏览器的动作。
Selenium Core接收到指令后,执行操作。
浏览器收到新的页面请求信息(因为在第4步中,Selenium Core的操作可能引发新的页面请求),发送Http请求,请求新的Web页面。由于Selenium Server在启动浏览器时做了手脚,所以Selenium Server会接收到所有由它启动的浏览器发送的请求。
Selenium Server接收到浏览器的发送的Http请求后,自己重组Http请求,获取对应的Web页面。
Selenium Server的Http Proxy把接收的Web页面返回给浏览器