12.Selenium的实现原理

对于Selenium而言,有V1.0、V2.0、V3.0这三个版本,V1.0和V2.0这两个版本的技术方案是截然不同的,V1.0的核心是Selenium RC,而V2.0的核心是WebDrier。而V3.0相比V2.0并没有本质上的变化,主要是增加了对MacOS的Safari和Windows的Edge的支持,并彻底删除了对Selenium RC的支持。

  • Selenium 1.0的工作原理
    Selenium 1.0又称Selenium RC。其中RC是Remote Control的缩写。Selenium RC利用的原理是:JavaScript代码可以很方便地获取页面上的任何元素并执行各种操作。
    但是应为“同源政策(Same-origin policy)”(只有来自相同域名、端口和协议的JavaScript代码才能被浏览器执行),多以要想在测试用例运行中的浏览器中,注入JavaScript代码从而实现自动化的Web操作,Selenium RC究必须“欺骗”被侧站点,让它误以为被注入的代码是同源的。
    那如何欺骗呢?这就是引用Selenium RC Server的根本原因,其中的HTTP Proxy模块就是用来“欺骗”浏览器的。
    Selenium RC的基本模块:
    在这里插入图片描述

Selenium RC Server主要包括Selenium Core,Http Proxy和Launcher三部分:

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

**Client Libraries,**是测试用例代码相Selenium RC Server发出Http请求的接口,支持多种语言。

Selenium RC的基本原理:
在这里插入图片描述

  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页面返回给浏览器,浏览器接收的页面进行渲染。
  • Selenium 2.0的工作原理

Selenium 2.0,又称Selenium WebDriver,它利用的原理是:使用浏览器原生的WebDriver实现页面操作。它是典型的Server-Client模式,Server端就是Remote Server,以下是Selenium 2.0的工作原理解析:
在这里插入图片描述

  1. 当使用Selenium2.0启动浏览器Web Browser时,后台会同时启动WebDriver Wire协议的Web Service作为Selenium的Remote Server,并将其与浏览器绑定。绑定完成后,Remote Server就开始监听Client端的操作请求。
  2. 执行测试时,测试用例会作为Client端,将需要执行的页面操作请求以Http Request的方式发送给Remote Server。该Http Request的body,是以WebDriver Wire协议规定的JSON格式来描述需要浏览器执行的具体操作。
  3. Remote Server接收到请求后,会对请求进行解析,并将解析结果发送给WebDriver,由WebDriver实际执行浏览器的操作。
  4. WebDriver可以看做是直接操作浏览器的原生组件,所以搭建测试环境时,通常都需要先下载浏览器对应的WebDriver。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值