Selenium私房菜系列6 -- 深入了解Selenium RC工作原理(1)
前一篇已经比较详细讲述了如何使用Selenium RC进行Web测试,但到底Selenium RC是什么?或者它由哪几部分组成呢??
一.Selenium RC的组成:
关于这个问题,我拿了官网上的一幅图来说明这个问题。
Selenium RC主要由两部分组成:
(1).Selenium Server:
Selenium Server负责控制浏览器行为,总的来说,Selenium Server主要包括3个部分:Launcher,Http Proxy,Selenium Core。其中Selenium Core是被Selenium Server嵌入到浏览器页面中的。其实Selenium Core就是一堆JS函数的集合,就是通过这些JS函数,我们才可以实现用程序对浏览器进行操作。
(2).Client Libraries:
写测试案例时用来控制Selenium Server的库。
二.Selenium RC与Testcase的关系
先看下图:
(1).测试案例(Testcase)通过Client Lib的接口向Selenium Server发送Http请求,要求和Selenium Server建立连接。
为什么要通过发送Http请求控制Selenium Server而不采用其他方式呢?从上文可以看出,Selenium Server是一个独立的中间服务器(确切地说是代理服务器),它可以架设在其他机器上!所以测试案例通过发送HTTP请求去控制Selenium Server是很正常的。
(2).Selenium Server的Launcher启动浏览器,把Selenium Core加载入浏览器页面当中,并把浏览器的代理设置为Selenium Server的Http Proxy。
(3).测试案例通过Client Lib的接口向Selenium Server发送Http请求,Selenium Server对请求进行解析,然后通过Http Proxy发送JS命令通知Selenium Core执行操作浏览器的动作。
(4).Selenium Core接收到指令后,执行操作。
(5).浏览器收到新的页面请求信息(因为在(4)中,Selenium Core的操作可能引发新的页面请求),于是发送Http请求,请求新的Web页面。
由于Selenium Server在启动浏览器时做了手脚,所以Selenium Server会接收到所有由它启动的浏览器发送的请求。
(6).Selenium Server接收到浏览器的发送的Http请求后,自己重组Http请求,获取对应的Web页面。
(7).Selenium Server的Http Proxy把接收的Web页面返回给浏览器。
为什么Selenium RC中的Selenium Server需要以这种代理服务器的形式存在呢?下一篇继续介绍:>
本文转自hyddd博客园博客,原文链接:http://www.cnblogs.com/hyddd/archive/2009/05/30/1492213.html,如需转载请自行联系原作者。
Selenium私房菜系列6 -- 深入了解Selenium RC工作原理(1)相关推荐
- Selenium私房菜系列8 -- 玩转Selenium Server
本篇主要是想更进一步介绍Selenium Server的工作原理,这次我们从Selenium Server的交互模式开始. 在<第一个Selenium RC测试案例>中,我们以命令&quo ...
- Selenium私房菜系列
在这段期间,我一直在找关于服务器的端测试方案,自动化工具等等,无意间我发现了Selenium这个工具.在试用一段时间后,觉得Selenium确实是一个很不错的Web测试工具.在和强大的QTP比较后,我 ...
- 【Nginx系列】Nginx配置使用与工作原理
热门系列: [Linux系列]Linux实践(一):linux常用命令 程序人生,精彩抢先看 目录 1.Nginx介绍 1.1 什么是Nginx? 1.2 Nginx能做什么 1.3 为什么要选择用N ...
- AI应用开发基础傻瓜书系列1-神经网络的基本工作原理
Copyright © Microsoft Corporation. All rights reserved. 适用于License版权许可 更多微软人工智能学习资源,请见微软人工智能教育与学习共建社 ...
- Selenium实战教程系列(三)--- Selenium中的动作
Selenium中针对元素进行的动作在代码中可以分为两类: Selenium::WebDriver::ActionBuilder类中的动作方法 Selenium::WebDriver::Element ...
- 面试系列八 es写入数据的工作原理
(1)es写数据过程 1)客户端选择一个node发送请求过去,这个node就是coordinating node(协调节点) 2)coordinating node,对document进行路由,将请求 ...
- javascript教程系列20: 前端必读,浏览器内部工作原理(转)
目录 一.介绍 二.渲染引擎 三.解析与DOM树构建 四.渲染树构建 五.布局 六.绘制 七.动态变化 八.渲染引擎的线程 九.CSS2可视模型 英文原文:How Browsers Work: Beh ...
- Ceph分布式存储系列(一):Ceph工作原理及架构浅析梳理
一.Ceph简介 众所周知,ceph是一种分布式存储系统,是有着"ceph之父"之称的Sage Weil读博期间的研究课题,项目诞生于2004年,在2006年基于开源协议开 ...
- 漏洞payload 靶机_学生会私房菜【20200707期】Wordpress 4.6 任意命令执行漏洞
学生会私房菜 学生会私房菜是通过学生会信箱收集同学们的来稿,挑选其中的优质文档,不定期进行文档推送的主题. 本期文档内容为:<Wordpress 4.6 任意命令执行漏洞> 作者介绍:AT ...
- 【高效程序员系列】别做机器人——让工作自动化
http://blog.csdn.net/jmshl/article/details/6764422 目录(?)[-] VS代码段的使用和定义 1Snippet Editor下载地址 Properti ...
最新文章
- 【MATLAB】基本绘图 ( 线条设定 | 线条设定组合 )
- 云服务器apache mysql php_服务器配置教程:阿里云服务器安装PHP环境(附PHP+MySQL+Apache后台小Demo)...
- 记录一次quartus II prime standard 18添加器件库的方法
- 回溯和递归的区别(简述)
- Myeclipse的standard、pro、spring、Blue、Bling版本功能差别
- SQL 使用总结一( 规范、基础)
- 移除数组第一个元素_3分钟短文 | PHP 数组删除元素,忘了foreach吧,有更优雅的方式...
- redhat rpm 卸载mysql_Linux下卸载MySQL rpm包出现error: specifies multiple packages 解决
- linux服务器知识学习:linux系统的目录结构
- Android系统中的广播(Broadcast)机制简要介绍和学习计划 .
- 一文详解 Base64编码原理
- 关心国事-21世纪经济报道:周鸿祎人治雅虎中国
- 程序员夏天穿格子衫,那么冬天穿什么?答案扎心了
- 开源数库最佳实践-「3306π」社区北京站
- 阿里巴巴Java开发手册github地址
- NLPCC2023 | 视频定位问答比赛CMIVQA赛题解析
- jpg转bmp操作方法
- DLT645-2007 规约 电表 报文解析
- 个人对专注力的一点看法
- rx580显卡运行不了Linux,AMD CPU Ryzen R7 2700X 安装 Ubuntu18.04 + AMD RX580 显卡驱动
热门文章
- linux下alias命令具体解释
- 20145238-荆玉茗 《网络对抗》免杀原理与实践
- C# 中值类型[Required(*****)] 报错
- 结对项目---万年历
- Oracle Concepts Guide 中 Oracle 实例 和 数据库 【关系图】
- MCS-51子程序库(二)
- es6 for(var item of list)
- vmware centos6.4挂载ntfs移动硬盘
- DynamicResource与StaticResource的区别
- 第八回 新年晚会艺压群芳 文理分科三人聚首[林大帅作品选]