前一篇已经比较详细讲述了如何使用Selenium RC进行Web测试,但到底Selenium RC是什么?或者它由哪几部分组成呢??

一.Selenium RC的组成:

关于这个问题,我拿了官网上的一幅图来说明这个问题。

Selenium RC主要由两部分组成:

(1).Selenium Server:

Selenium Server负责控制浏览器行为,总的来说,Selenium Server主要包括3个部分:LauncherHttp ProxySelenium 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)相关推荐

  1. Selenium私房菜系列8 -- 玩转Selenium Server

    本篇主要是想更进一步介绍Selenium Server的工作原理,这次我们从Selenium Server的交互模式开始. 在<第一个Selenium RC测试案例>中,我们以命令&quo ...

  2. Selenium私房菜系列

    在这段期间,我一直在找关于服务器的端测试方案,自动化工具等等,无意间我发现了Selenium这个工具.在试用一段时间后,觉得Selenium确实是一个很不错的Web测试工具.在和强大的QTP比较后,我 ...

  3. 【Nginx系列】Nginx配置使用与工作原理

    热门系列: [Linux系列]Linux实践(一):linux常用命令 程序人生,精彩抢先看 目录 1.Nginx介绍 1.1 什么是Nginx? 1.2 Nginx能做什么 1.3 为什么要选择用N ...

  4. AI应用开发基础傻瓜书系列1-神经网络的基本工作原理

    Copyright © Microsoft Corporation. All rights reserved. 适用于License版权许可 更多微软人工智能学习资源,请见微软人工智能教育与学习共建社 ...

  5. Selenium实战教程系列(三)--- Selenium中的动作

    Selenium中针对元素进行的动作在代码中可以分为两类: Selenium::WebDriver::ActionBuilder类中的动作方法 Selenium::WebDriver::Element ...

  6. 面试系列八 es写入数据的工作原理

    (1)es写数据过程 1)客户端选择一个node发送请求过去,这个node就是coordinating node(协调节点) 2)coordinating node,对document进行路由,将请求 ...

  7. javascript教程系列20: 前端必读,浏览器内部工作原理(转)

    目录 一.介绍 二.渲染引擎 三.解析与DOM树构建 四.渲染树构建 五.布局 六.绘制 七.动态变化 八.渲染引擎的线程 九.CSS2可视模型 英文原文:How Browsers Work: Beh ...

  8. Ceph分布式存储系列(一):Ceph工作原理及架构浅析梳理

    一.Ceph简介     众所周知,ceph是一种分布式存储系统,是有着"ceph之父"之称的Sage Weil读博期间的研究课题,项目诞生于2004年,在2006年基于开源协议开 ...

  9. 漏洞payload 靶机_学生会私房菜【20200707期】Wordpress 4.6 任意命令执行漏洞

    学生会私房菜 学生会私房菜是通过学生会信箱收集同学们的来稿,挑选其中的优质文档,不定期进行文档推送的主题. 本期文档内容为:<Wordpress 4.6 任意命令执行漏洞> 作者介绍:AT ...

  10. 【高效程序员系列】别做机器人——让工作自动化

    http://blog.csdn.net/jmshl/article/details/6764422 目录(?)[-] VS代码段的使用和定义 1Snippet Editor下载地址 Properti ...

最新文章

  1. 【MATLAB】基本绘图 ( 线条设定 | 线条设定组合 )
  2. 云服务器apache mysql php_服务器配置教程:阿里云服务器安装PHP环境(附PHP+MySQL+Apache后台小Demo)...
  3. 记录一次quartus II prime standard 18添加器件库的方法
  4. 回溯和递归的区别(简述)
  5. Myeclipse的standard、pro、spring、Blue、Bling版本功能差别
  6. SQL 使用总结一( 规范、基础)
  7. 移除数组第一个元素_3分钟短文 | PHP 数组删除元素,忘了foreach吧,有更优雅的方式...
  8. redhat rpm 卸载mysql_Linux下卸载MySQL rpm包出现error: specifies multiple packages 解决
  9. linux服务器知识学习:linux系统的目录结构
  10. Android系统中的广播(Broadcast)机制简要介绍和学习计划 .
  11. 一文详解 Base64编码原理
  12. 关心国事-21世纪经济报道:周鸿祎人治雅虎中国
  13. 程序员夏天穿格子衫,那么冬天穿什么?答案扎心了
  14. 开源数库最佳实践-「3306π」社区北京站
  15. 阿里巴巴Java开发手册github地址
  16. NLPCC2023 | 视频定位问答比赛CMIVQA赛题解析
  17. jpg转bmp操作方法
  18. DLT645-2007 规约 电表 报文解析
  19. 个人对专注力的一点看法
  20. rx580显卡运行不了Linux,AMD CPU Ryzen R7 2700X 安装 Ubuntu18.04 + AMD RX580 显卡驱动

热门文章

  1. linux下alias命令具体解释
  2. 20145238-荆玉茗 《网络对抗》免杀原理与实践
  3. C# 中值类型[Required(*****)] 报错
  4. 结对项目---万年历
  5. Oracle Concepts Guide 中 Oracle 实例 和 数据库 【关系图】
  6. MCS-51子程序库(二)
  7. es6 for(var item of list)
  8. vmware centos6.4挂载ntfs移动硬盘
  9. DynamicResource与StaticResource的区别
  10. 第八回 新年晚会艺压群芳 文理分科三人聚首[林大帅作品选]