资源推荐:
视频资源: 软件测试相关系列视频
社区资源: 自动化测试交流群
Selenium1组件
Selenium Server, 负责启动和关闭浏览器,以及解释和运行从测试程序传送过来的Selenese指令,并充当HTTP Proxy角色。
Client开发库,开发库提供了编写测试脚本的api,用于与Selenium Server进行指令交互。
Selenium1 Architecture
为了能更好的理解Selenium RC Server是如何工作以及为什么要使用代理注入的方式完成测试指令执行,首先必须要理解的是“同源策略”(The Same Origin Policy)。
The Same Origin Policy, 市场上所有浏览器之所以会应用这个策略,其目的是为了阻止来自其他站点的javascript访问本站的web 信息,“同源策略”意思是浏览器仅执行当前访问的域(domain)下的代码,而不会执行来自其他站点的代码,如果这种方式行的通的话,我们很多信息就很容易被跨站方式窃取,也就是常说的XSS(Cross-Site Scripting).
所以Selenium Core(Javascript库)想正确的在目标站点中执行Selenese指令,就必须将其与被测Web应用放置在同源位置。
由于Selenium Core由javascript实现,所以它无法避免同源策略的限制,但是Selenium RC不受此限制,将Selenium RC作为一个代理来避免同源问题。
关于同源策略及XSS的详细信息,可以参考如下文章:Same Origin Policy , XSS
Selenium1架构如下图所示:
当我们执行一个测试的时候,会按如下步骤依次执行:
1. 客户端(测试脚本)与SelenIum-RC建立一个连接。
2. Selenium-RC启动浏览器,并加载一个被注入了Selenium-Core的javascript的页面,此时浏览器会加载一个默认的用户配置,将浏览器代理设置为localhost:4444,其目的就是让浏览器所有请求及服务器所有响应都通过这个代理服务进行转发。
3. 客户端开始发送指令到Selenium-RC Server
4. Selenium-RC Server收到指令后进行解释并触发已注入的javascript执行指令。
5. 浏览器收到javascript指令后,相当于真实用户与UI交互,并向HTTP Proxy发送Http请求。
6. Selenium-RC Server与web server交互,获取到web server响应后,将其伪装成与第二步加载的页面看起来是来自同一个服务器,依次规避浏览器同源策略。
7. 浏览器收到响应内容后,进行渲染等操作。
点击链接加入群【悦分享测试联盟】:https://jq.qq.com/?_wv=1027&k=5DiePik