测试开发 - 十年磨一剑(三)UI自动化与Selenium

大学培养方向是开发,所以在入行测试半年的时候,开始接触自动化测试,当时在给微软Windows Azure做外包,所以自动化环境是C#和Selenium。

Selenium作为UI自动化的传奇工具,十几年来占据了大部分市场,虽然现在有Cucumber、Cypress挑战仍然居于霸主地位。最近更新了Selenium4,其中IDE的更新暂且不提,毕竟很久不录制了,新版本使用了W3C协议,更新了Grid,新增了相对定位器等等。

自家的测试框架也已经更新了Selenium4,完美兼容Selenium3的脚本。测试服务器集群是自主研发的,未使用Grid,但是新特性还是可以自己玩玩,尤其是相对定位器,应该对一些难以定位的元素比较友好,还有动态元素等等。

如今的自动化测试,基本分为三个级别,如上图所示。三者没有等级之分,只是测试的方法不一样,设计测试用例的思路不一样,使用的测试工具不一样。自动化测试工程师接触最多的主要是UI和API的自动化,单元测试国内大部分厂家都是由开发完成,但是基本上只停留在语句覆盖的等级上。

这里先说Web的UI自动化,App是后话。

一、Web UI自动化

UI自动化测试把手动测试的点点点以代码的形式实现,一次投入,无限次使用,基本上用于回归测试,也适配如今流行的敏捷开发模式。

曾几何时,Web UI自动化成了测试人员的分界点,会与不会的待遇相差较大。

二、Selenium

1. Selenium 1.0

Selenium 1.0即是Selenium RC(Remote Control),其工作原理为:

a. 测试用例通过基于不同语言的Client Libraries向Selenium RC Server发送Http请求,要求与其建立 连接。

b. 连接建立后,Selenium RC Server的Launcher就会启动浏览器或者重用之前已经打开的浏览器, 把Selenium Core(JavaScript函数的集合)加载到浏览器页面当中,并同时把浏览器的代理设置 为Http Proxy。

c. 测试用例通过Client Libraries向Selenium RC Server发送Http请求,Selenium RC Server解析请求, 然后通过Http Proxy发送JavaScript命令通知Selenium Core执行浏览器上控件的具体操作。
d. Selenium Core接收到指令后,执行操作。

e. 如果浏览器收到新的页面请求信息,则会发送Http请求来请求新的Web页面。由于Launcher在启动 浏览器时把Http Proxy设置成为了浏览器的代理,所以Selenium RC Server会接收到所有由它启动 的浏览器发送的请求。

f. Selenium RC Server接收到浏览器发送的Http请求后,重组Http请求以规避“同源策略”,然后获取 对应的Web页面。

g. Http Proxy把接收的Web页面返回给浏览器,浏览器对接收的页面进行渲染。

另外还有让人又爱又恨的Selenium IDE,它是一个Firefox的插件,可以录制和回放浏览器操作,生成测试脚本。在Selenium 2.0测试框架搭建起来之后,逐渐退出舞台。

2. Selenium 2.0

Selenium 2.0即是Selenium WebDriver,利用不同浏览器的原生API,封装成更加面向对象的WebDriver直接操作浏览器页面里的元素,甚至操作浏览器本身(截屏,窗口大小,启动,关闭,安装插件,配置证书之类的)。

Selenium WebDriver是典型的Server-Client模式,Server端就是Remote Server。以下是Selenium 2.0工作原理的解析。

a. 当使用Selenium2.0启动浏览器Web Browser时,后台会同时启动基于WebDriver Wire协议的Web Service作为Selenium的Remote Server,并将其与浏览器绑定。绑定完成后,Remote Server就开始监听Client端的操作请求。

b. 执行测试时,测试用例会作为Client端,将需要执行的页面操作请求以Http Request的方式发送 给Remote Server。该HTTP Request的body,是以WebDriver Wire协议规定的JSON格式来描述需要浏览器执行的具体操作。

c. Remote Server接收到请求后,会对请求进行解析,并将解析结果发给WebDriver,由WebDriver实际执行浏览器的操作。

d. WebDriver可以看做是直接操作浏览器的原生组件(Native Component),所以搭建测试环境时,通常都需要先下载浏览器对应的WebDriver。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值