-
2011-03-29
Selenium RC解析 - [Testing tools]
Selenium RC解析
首先我们来看看Selenium的简单的工作架构图,如图我们可以得出以下流程。
- Selenium client driver将test case指令转换为Selenese 命令发送到Remote server
- Remote server将这些Selenese指令发送到Selenium core
- Selenium core运行Selenese,并触发一些JS函数来操作浏览器

我们再来看看这些request在selenium内部传送的具体流程
- Selenium client driver, 就是java, ruby, python啊什么设计的测试用例了,通过Selenium IDE可以方便的录制,然后自己可以做脚本做相应过的扩展。
- Selenium server实际上包含以下模块,这些模块的具体作用在这一流程中都会有体现。
- Launcher
- Proxy Server
- Selenium Core

- Client driver 发送http request到 selenium server,建立与selenium server的链接。
- Selenium sever的 launcher模块会做两件事情
a. 启动或者重用已经打开的浏览器,
b. 加载Selenium core的javascript到浏览器 - Client driver将Selenese命令通过proxy server发送给 selenium core
- Selenium core编译Selenese 并触发相应JS函数来对浏览器执行操作
- Selenium core模块会执行相应的操作 发送request到proxy server(第一次一般是打开AUT的URL)
- 浏览器向AUT server发送request 并获取对应的web页面内容
- Selenium server把从 AUT server上获取的内容返回到页面
为什么,为什么Selenium重要走Proxy server转一圈喃?这就涉及到Selenium-Core对浏览器的操作机制了,Selenium core是一堆JS函数,这对JS函数来对AUT程序的页面来操作,这就遇到一个问题The same origin policy(http://en.wikipedia.org/wiki/Same_origin_policy)
同源策略The same origin policy
同源策略可以追溯到Netscape Navigate 2.0是由Netscape提出来的一个很重要的安全策略,目前市面上的浏览器都严格使用这个安全策略。假设你用浏览器打开2个页面A和B,页面A只能执行从A服务器上过来的JS, B只能执行B服务器上过来的JS,这就是同源策略;通过这样就保证了一个网站的页面内容不会被另外的恶意脚本修改。
如果没有同源策略,假设下你在浏览器tab1三打开了晚上银行的页面,tab2打开了一个恶意网站,那么恶意网站通过JS的注入就可以轻松的获取你的银行帐号和密码,这不是一个很可怕的事情吗?它是必不可缺的。
共1页 1







