Selenium的实现原理

对于Selenium而言,V1.0和V2.0版本的技术方案是截然不同的,V1.0 的核心是Selenium RC,而V2.0 的和核心是WebDriver,可以说完全是两个东西。

Selenium 1.0的工作原理

Selenium 1.0又称Selenium RC,其中RC是Remote Control的缩写。Selenium RC利用的原理是:JavaScript代码可以很方便地获取页面上的renew元素并执行各种操作。
但因为“同源政策”,所以要想在测试用例运行中的浏览器中,注入JavaScript代码从而实现自动化的Web操作,Selenium RC就必须“欺骗”被测站点,让它误以为被注入的代码是同源的。
如何实现欺骗呢?这就是引入Selenium RC Server的根本原因,其中的Http Proxy模块就是用来“欺骗”浏览器的。Selenium RC的基本模块如下:
Selenium RC Server,主要包括Selenium Core,Http Proxy和Launcher三部分:

• Selenium Core,是被注入到浏览器页面的JavaScript函数集合,用来实现界面元素的识别和操作;
• Http Proxy,作为代理服务器修改JavaScript的源,以达到“欺骗”被测站点的目的;
• Launcher,用来启动浏览器完成Selenium Core的注入和浏览器代码的设置。

Selenium RC的执行流程如下图:

如果对软件测试有兴趣,想了解更多的测试知识,解决测试问题,以及入门指导,帮你解决测试中遇到的困惑,我们这里有技术高手。如果你正在找工作或者刚刚学校出来,又或者已经工作但是经常觉得难点很多,觉得自己测试方面学的不够精想要继续学习的,想转行怕学不会的, 都可以加入我们
,群内可领取最新软件测试大厂面试资料和Python自动化、接口、框架搭建学习资料!

  1. 测试用例通过基于不同语言的Client Libraries向Selenium RC Server发送Http请求,要求与其建立连接。
  2. 连接建立后,Selenium RC Server的Launcher就会启动浏览器或者重用之前已经打开的浏览器,把Selenium Core(Javascript函数的集合)加载到浏览器页面当中,并同时把浏览器的代理设置为Http Proxy。
  3. 测试用例通过Client Libraries向Selenium RC Server发送Http请求,Selenium RC Server解析请求,然后通过Http Proxy发送JavaScript命令通知Selenium Core执行浏览器上控件的具体操作。
  4. Selenium Core接收到指令后,执行操作。
  5. 如果浏览器收到新的页面请求信息,则会发送Http请求来请求新的Web页面。由于Launcher在启动浏览器时把Http Proxy设置成为了浏览器的代码,所以Selenium RC Server会接收到所有由它启动的浏览器发送的请求。
  6. Selenium RC Server接收到浏览器发送的Http请求后,重组Http请求以规避“同源策略”,然后获取对应的Web页面。
  7. Http Proxy把接收的Web页面返回给浏览器,浏览器对接收的页面进行渲染。
    Client Libraries,是测试用例代码向Selenium RC Server发送Http请求的接口,支持多种语言,包括Java、C#和Ruby等。

Selenium 2.0的工作原理

Selenium 2.0又称Selenium WebDriver,它利用的原理是:使用浏览器原生的WebDriver实现页面操作。它的实现方式完全不同于Selenium 1.0。
Selenium WebDriver是典型的Server-Client模式,Server端就是Remote Server。Selenium WebDriver执行流程如下图所示:
如果对软件测试有兴趣,想了解更多的测试知识,解决测试问题,以及入门指导,帮你解决测试中遇到的困惑,我们这里有技术高手。如果你正在找工作或者刚刚学校出来,又或者已经工作但是经常觉得难点很多,觉得自己测试方面学的不够精想要继续学习的,想转行怕学不会的, 都可以加入我们
,群内可领取最新软件测试大厂面试资料和Python自动化、接口、框架搭建学习资料!

  1. 当使用Selenium 2.0启动浏览器Web Brower时,后台会同时启动基于WebDriver协议的Web Service作为Selenium的Remote Server,并将其与浏览器绑定。绑定完成后,Remote Server就开始监听Client端的操作请求。
  2. 执行测试时,测试用例会作为Client端,将需要执行的页面操作请求以Http Request的方式发送给Remote Server。该Http Request的body,是以WebDriver Write协议规定的JSON格式来描述需要浏览器执行的具体操作。
  3. Remote Server接收请求后,会对请求进行解析,并将解析结果发送给WebDriver,由WebDriver实际执行浏览器的操作。
  4. WebDriver可以看做是直接操作浏览器的原生组件(Native Component),所以搭建测试环境时,通常都需要先下载浏览器对应的We

Selenium的实现原理,一篇文章讲透彻!相关推荐

  1. TD算法超详细解释,一篇文章看透彻!

    [已解决]TD算法超详细解释和实现(Sarsa,n-step Sarsa,Q-learning)一篇文章看透彻! 郑重声明:本系列内容来源 赵世钰(Shiyu Zhao)教授的强化学习数学原理系列,本 ...

  2. 【密码学】 一篇文章讲透数字证书

    [密码学] 一篇文章讲透数字证书 数字证书介绍   数字证书是一种用于认证网络通信中参与者身份和加密通信的证书,人们可以在网上用它来识别对方的身份.   我们在上一篇博客中介绍了数字签名的作用和原理, ...

  3. 用计算机怎么做蒙特卡洛模拟,一篇文章讲明白蒙特卡洛模拟

    先来个测试题: 用仿真的方法计算圆周率π,请写出计算步骤和简单的公式: (思考十秒钟,想不出来可以继续往下看,后面有答案) 001 什么是蒙特卡洛模拟 蒙特卡洛模拟,又称为统计实验方法 以概率论和统计 ...

  4. 参考文献怎么查找,去哪里查找?一篇文章讲明白这些问题

    在我们撰写论文查找参考文献时,往往不知道从哪里入手,本文小编就针对下面这三个方面给大家详细讲解下: 一.查找参考文献方法 二.参考文献资料查找网站 三.参考文献格式规范 一.查找参考文献方法: 1.知 ...

  5. 一篇文章讲清Go的内存布局和分配原理

    Go内存分配 Go 之所以在高并发环境下表现优异,除了咱们都知道的GMP模型,其实Go的内存布局和分配机制也起到了不少作用. 今天邀请到公众号「Go编程时光」的号主大佬明哥,给大家盘一盘 Go 中关于 ...

  6. 总线全称_一篇文章讲透I2C总线协议

    最近一段时间工作上比较忙,一直没有抽出空来写文章与大家分享,这两天腾出些时间静下心来沉淀一番.看标题大家已经知道了是来总结I2C总线,我相信大家或多或少的都接触过I2C总线,这篇文章我们就由浅入深的仔 ...

  7. 一篇文章讲透控制反转和依赖注入

    https://www.jianshu.com/p/07af9dbbbc4b 转载链接:http://blog.xiaohansong.com/2015/10/21/IoC-and-DI/# http ...

  8. 一篇文章讲清什么是NVMe

    因为NVMe的出现,硬盘的性能得到了极大的提升.这个极大是多少呢?读带宽从500MB/s提高到了3200MB/s,写带宽从400MB/s提高到了1200MB/s左右.而读IOPS则达到了50万,甚至更 ...

  9. 原理 一篇文章通透理解序列号实现原理

    1.序列号的本质 序列号等价于注册码,是软件发行商的一种维权手段,也就是正版软件的一个身份证.本质:防止盗版.按功能收费等. 目前,商用软件和共享软件绝大部份都是采用注册码授权的方式来保证软件本身不被 ...

最新文章

  1. python的工资为什么这么低-现在为什么 Python 这么火?
  2. python批量下载文件-python使用selenium实现批量文件下载
  3. python3.5.2-python升级 (2.6升级到3.5)
  4. rust营火为什么放不下去_从一个研发质量案例看,5why分析法,为什么分析不下去了?...
  5. 咖啡馆的故事:FTP, RMI , XML-RPC, SOAP, REST一网打尽
  6. AC日记——魔方 洛谷 P2007
  7. 吴恩达机器学习笔记——第一章
  8. Python - Django - 中间件 process_exception
  9. python爬取多页数据_python爬虫实现爬取同一个网站的多页数据代码实例
  10. tomcat使用遇到的问题汇总
  11. SQL Server2008数据库管理 (第二部分)
  12. 大话数据结构学习笔记-第三章线性表
  13. AutoCAD 2019 for mac汉化版
  14. arcgis里面怎么截图_怎么利用ARCGIS裁剪图像
  15. u盘重置后计算机不显示了,u盘在电脑上不显示了如何恢复
  16. PC-红警联机问题与下载
  17. 如何在html修改图片大小,HTML – 如何在CSS中动态调整图像大小?
  18. linux os版本 32或64位查看
  19. 瑞昱网卡linux通用驱动下载,Realtek网卡驱动Win10-Realtek瑞昱通用网卡驱动Win10版下载 v10.003.0728.2015官方版--pc6下载站...
  20. 前端导出excel自定义样式(行高除外)

热门文章

  1. 二叉树的递归遍历与非递归遍历
  2. matlab strel 函数
  3. 工程师注意了,你PCB板就是这样被抄的!
  4. 从头开始制作51智能车——循迹+遥控+避障
  5. linux 5353端口禁止,系统运维|解决DNS污染与劫持之使用特殊DNS端口
  6. vue项目使用Print.js插件实现PDF文件打印
  7. win7查看端口占用的进程
  8. ZEGO教程:如何从零搭建小程序直播平台
  9. 论文浅尝 | 常识问答中的忠诚知识图解释
  10. 基于51单片机点亮LCD1602+自定义字符