Selenium与WebDriver的工作原理

​       要说当下有哪些炙手可热的自动化技术,Selenium绝对占据了一席之地。无论是各大测试论坛,还是众多培训机构的课程里,都常常提到Selenium这个UI测试技术。现在我们讨论的Selenium,通常是Selenium3(Selenium+WebDriver)。但在很多年前,Selenium与WebDriver是两个拥有不同原理的技术。

​      Selenium1

核心库
代理服务器
启动浏览器
Selenium
SeleniumIDE
SeleniumGrid
SeleniumServer
SeleniumCore
HttpProxy
Launcher

      创始人是来自 ThoughtWorks 的Jason Huggins,Selenium原理是通过JS来控制浏览器,完成一系列的操作。

​       具体一点的介绍如下:

​       第一步:测试脚本(可以是各种语言编写)向Selenium Server发送请求,建立连接

​       第二步:Selenium Server通过Launcher启动浏览器,并在浏览器中嵌入Selenium Core的JS代码库,然后再将浏览器的代理设置为Selenium Server的Http proxy

​       第三步:测试脚本向Selenium Server发送Http请求,Selenium Server解析请求,并通过Http proxy调用被嵌入的Selenium Core。

​       第四步:Selenium Core接受到请求,通过JS控制浏览器完成响应的操作。

​       第五步:如果操作过程中,浏览器端发送了请求,因为浏览器的代理访问地址为Selenium Server的Http proxy地址,那么Selenium Server就会接受到这个浏览器的请求,Selenium Server解析、重组请求后,将请求发送到Web服务器去。

​       第六步:Web服务器接受到请求,返回响应结果给Selenium Server。

​       第七步:Selenium Server将响应结果发送到浏览器端

  ​     WebDriver

​       WebDriver是通过浏览器内部接口来操作浏览器,因此不同的浏览器必须适配不同的WebDriver。与Selenium使用JS代码定位、操作元素不同,WebDriver使用内部的接口来定位元素的坐标位置,并在该位置触发相应的事件。

​       WebDriver整个运行过程,可以类比为打出租车:

​       乘客(测试脚本)、出租车司机(浏览器驱动)、出租车(浏览器)

​       乘客先叫车,相应的司机开着出租车过来,乘客告诉司机去哪里,司机听了后操作踩离合、挂挡、轰油门前往目的地,最终乘客下车。

​       如果觉得有些抽象,我们就切换回真实的场景。

​       第一步:测试脚本(客户端)调用浏览器驱动,该浏览器驱动去启动对应的浏览器(在新线程中)。

​       第二步:启动后,WebDriver将浏览器绑定到特定的端口上(服务器),此浏览器便成了该WebDriver的Remote Server

​       第三步:测试脚本(客户端)创建一个Session,并通过Http协议向Remote Server(浏览器,可以看做服务器)发送restful请求,Remote Server接受到请求后,解析为该浏览器的内部接口来调用,完成相应的操作并接受response

​       第四步:测试脚本(客户端)接受到服务器端的response,决定是继续发送请求还是结束脚本

​       优缺点

​       作为早期很给力的UI自动化测试技术,他们都拥有着各自的优缺点:

​       Selenium

​       优点:1.因为是使用JS,在调用页面元素方面更强

​                  2.可以自定义JS语句,灵活性较高

​       缺点:1.也是使用JS,需要将Selenium API翻译为JS语句,对翻译的准确性依赖较严重,因此稳定性无法保证

​        2.翻译的效率较低,执行时间较长

​       3.使用JS注入技术与浏览器交互,后来大家都不允许外部JS注入了

​        (真是成也JS,败也JS)

​       WebDriver

​       优点:调用的是浏览器内部接口,稳定性较强

​       缺点:1.不够灵活,操作页面元素没有Selenium强

​   ​               2.不同的浏览器需要不同的驱动

​       所幸的是,后面Jason Huggins与Simon Stewart在Google成了同事,也就有了后来的Selenium2、Selenium3。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值