盘点Selenium和Appium异同点,揭秘二者内部原理!

栏目: 编程工具 · 发布时间: 5年前

前段时间学习了selenium的使用,今天开始接触appium看到appium的原理后产生了疑惑:

现在的selenium是通过webdriver来操作驱动浏览器的,然而appium有一个server的概念

那么为什么没有app driver这个东西呢?

盘点Selenium和Appium异同点,揭秘二者内部原理!

selenium

早期的selenium

早期的selenium主要是指selenium1.0的版本,

这个版本主要由Selenium IDE + Selenium Grid + SeleniumRC组成

seleniumRC就是后来被webdriver取代的一个代理server

RC == Remote Control 远程控制

早期Selenium 引入了 Remote Control Server 这样一个代理 Server,JavaScript 脚本注入和与 Server 通讯都通过这个代理 Server 来进行,JavasScript可以获取并调用页面的任何元素,Selenium启动一个Server,将操作Web元素的API调用转化为一段段JavaScript,在Selenium内核启动浏览器之后注入这段JS

缺点:但是JS注入速度不理想,稳定性大大依赖于Selenium内核对API翻译成的JS质量高低

引入代理Remote Control Server是因为“同源策略”的限制,通过这个代理服务器来“欺骗”远程Server,达到使其以为是从同一个地方load代码以正确返回请求数据的效果

seleniumRC的原理

1.Selenium RC Server 启动一个浏览器(或是已经使用中),并注入js代码

2.将测试脚本代码传到客户端的 Selenium-Core 中

3.Selenium-Core 翻译并解析执行用户录制的操作

4.让代理 Server 进行通讯

5.Remote Control Server 负责跟远程 Web 应用服务器进行通讯

seleniumRC的组成

1.Selenium Server(Launcher、Http Proxy、Selenium Core)

2.Client Libraries(用来控制server)

seleniumRC的工作流程

1.测试用例通过Client Libraries的接口向Selenium Server发送Http请求,要求和Selenium Server建立连接

2.Selenium Server的Launcher启动浏览器,把Selenium Core加载入浏览器页面中,并发浏览器的代理设置为Selenium Server的Http Proxy。

3.测试用例通过Client Libraries的接口向Selenium Server发送Http请求,Selenium Server对请求进行解析,然后通过Http Proxy发送JS命令通知Selenium Core执行操作浏览器的动作

4.Selenium Core接收到指令后,执行操作

5.浏览器收到新的页面请求信息,于是发送Http请求,请求新的web页面。Selenium Server会接收到所有由它启动的浏览器发动的请求

6.Selenium Server接收到浏览器发送的Http请求后,自己重组Http请求,获取对应的web页面

7.Selenium Server的Http Proxy把接收的Web页面返回给浏览器

现在的selenium

selenium3.0以后移除了seleniumRC,取而代之的是webdriver

用一张图来展示selenium3.0的运行原理

盘点Selenium和Appium异同点,揭秘二者内部原理!

这里讲到的是测试脚本和浏览器的交互,客户端开始运行驱动浏览器的脚本的时候,这时浏览器收到请求开始启动并开启侦听端口,并自动创建session,保持浏览器和对应客户端的会话连接,然后客户端运行脚本,向浏览器发送http请求,浏览器解析请求,根据脚本内容做出相应操作,返回response。这时客户端根据response选择结束还是继续执行

tips:

1.webdriver操作浏览器、页面采用的协议:the webdriver wire protocol

2.Client和Server的通信协议:HTTP

3.HTTP传输的数据内容为遵循WP协议json格式数据

4.浏览器驱动实现了webdriver协议的api

appium

appium和selenium之间的不同

appium本身就是一个server,而selenium废弃了server,用webdriver来驱动浏览器

appium工作原理

当开启appium服务器的同时就开启了监听端口;我们运行脚本的时候,调用任何的appiumAPI,都会向Appium Server端post一条HTTP请求,请求内容就是根据webdriver wire protocol协议规定的一条JSON格式的数据;Appium Server端接收到请求后,解析出JSON数据并发送到 手机 端;手机端上已经由BootStrap.jar(iOS为BootStrip.js)开启的socket服务器监听相应的端口,BootStrap.jar在appium每个session第一次访问手机端的时候会自动安装;手机端接收到对应的请求后,通过BootStrap.jar翻译成UIAutomator能执行的命令,然后通过UIAutomator处理并操作APP完成测试。

appium的几个概念

1.appium/appium server

一般所说的appium其实是一个基于node.js的web服务器,它是测试脚本和设备端交互的桥梁

用npm install -g appium 安装的是命令行的没有界面的appium server

2.appium GUI

它是把没有界面的appium server封装出了一个图形界面,方便操作,但是现在已经被appium desktop所取代

3.appium Desktop

它是一款适用于Mac,Windows和 Linux 的开源应用程序,它以美观而灵活的用户界面为您提供appium server的强大功能

4.appium client

第1点中说到,appium其实是一个sweb server,server是接收请求来操作设备端的app的,既然有了server那么一定会有client

这个client就是我们写测试脚本时导入的包

Python中可以运行 pip install Appium-Python-Client 来安装

Android和 iOS

盘点Selenium和Appium异同点,揭秘二者内部原理!

盘点Selenium和Appium异同点,揭秘二者内部原理!

欢迎加入  51软件测试大家庭,在这里你将获得【最新行业资讯】,【免费测试 工具 安装包】,【软件测试技术干货】,【面试求职技巧】... 51与你共同学习,一起成长!期待你的加入: QQ                     群:                    755431660


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

分布式算法导论

分布式算法导论

泰尔 / 霍红卫 / 机械工业出版社 / 2004年09月 / 39.0

分布式算法20多年来一直是倍受关注的主流方向。本书第二版不仅给出了算法的最新进展,还深入探讨了与之相关的理论知识。这本教材适合本科高年级和研究生使用,同时,本书所覆盖的广度和深度也十分适合从事实际工作的工程师和研究人员参考。书中重点讨论了点对点消息传递模型上的算法,也包括计算机通信网络的实现算法。其他重点讨论的内容包括分布式应用的控制算法(如波算法、广播算法、选举算法、终止检测算法、匿名网络的随机......一起来看看 《分布式算法导论》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码