UiAutomator和Appium之间的区别和联系

联系:

在Android端,appium基于WebDriver协议,利用Bootstrap.jar,最后通过调⽤用UiAutomator的命令,实现App的自动化测试。

UiAutomator测试框架是AndroidSDK自带的App UI自动化测试Java库。

1、UiAutomator——基于UIAutomation的用户界面自动化测试框架,可以跨应用工作;

2、UiAutomator只能测试Android native app

3、主要功能跟Appium类似

4、可以跨应用测试,Google原生,其稳定性和后续的维护更新可以得到保障,运行时也有更多的权限

5、可以跨进程操作;

6、运行速度快;

7、UiAutomator框架对外提供的API,主要有UiDevice、UiSelector、UiObject、UiCollection和UiScrollable等

8、使用uiautomatorviewer.bat来检索手机界面视图

9、支持的语言可以有python、java等,google推出的底层框架使用java编写的,但是也有python封装的底层框架,因此也可使用python进行自动化测试

Appium——跨平台,允许采用同一套API在不同的平台(IOS,Android)上编写测试代码

Appium其实是找了一个中间件Bootstrap,Bootstrap是一个Uiautomator的测试脚本,UiAutomator可以正常运行它,它也可以正常的使用UiAutomator的方法,这个就是Appium的命令可以转换成UiAutomator命令的关键。

Appium可以跨平台跨语言,将脚本通过Appiumserver发送给Bootstrap,然后再运行,所以,相当于Appium封装了UiAutomator,功能更强大。

1、Appium是基于UIAutomator框架实现的一个开源、跨平台的测试框架。支持跨平台它允许测试人员在不同的平台iOS或Android使用同一套API来写自动化测试脚本,可以增加iOS和Android测试套件间代码的复用性。支持多语言如:java、python;

2、Appium测试相当于黑盒测试,测试UI逻辑正确性获取一个AppiumDriver对象。该对象只是有很多findElements()的方法,获取到UI元素。UI元素是WebElement,这个类提供的方法基本是获取信息为主,比如获取name,class,location,text,isSlected,isTouched等信息。这个测试框架,只是测试UI逻辑的正确性;

3、在运行脚本上执行速度较慢,没有uiautomator的执行速度快;

4、appium使用的是Client/Server的设计模式,实现跨平台,多语言。只要client能够发送http请求给server,那么的话client用什么语言来实现都是可以的,通过Python(python-client )编写了一个appium自动化脚本并执行,appium-Server通过解析,驱动iOS设备来执行appium自动化脚本。或者,我在Windows平台上,通过Java( java-client )编写了一个appium自动化脚本并执行,请求会首先到 appiumForWindow.zip(Window下的appium-Server),appium-Server通过解析,驱动Android虚拟机或真机来执行appium脚本。所以,你会看到appium的强大之处就在于此。
————————————————
版权声明:本文为CSDN博主「小八路2222」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yongwan5637/article/details/79879774

UiAutomator和Appium之间的区别2的更多相关文章

  1. 自动化测试框架 hierarchyViewer、Uiautomator、Appium的区别比较!

    一.HierarchyViewer: 优点:1)能够可视化的角度直观地获得UI布局设计结构和各种属性的信息 2)使用hierarchyviewer.bat来检索手机界面布局 缺点:1)稳定性差,出现过 ...

  2. select、poll、epoll之间的区别总结

    select.poll.epoll之间的区别总结 05/05. 2014 select,poll,epoll都是IO多路复用的机制.I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪 ...

  3. 你真的会玩SQL吗?EXISTS和IN之间的区别

    你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接.外连接 你真的会玩SQL吗?三范式.数据完整性 你真的会玩SQL吗?查询指定节点及其所有父节 ...

  4. [转]ExtJs基础--Html DOM、Ext Element及Component三者之间的区别

    要学习及应用好Ext框架,必须需要理解Html DOM.Ext Element及Component三者之间的区别. 每一个HTML页面都有一个层次分明的DOM树模型,浏览器中的所有内容都有相应的DOM ...

  5. iOS中assign,copy,retain之间的区别以及weak和strong的区别

    @property (nonatomic, assign) NSString *title; 什么是assign,copy,retain之间的区别? assign: 简单赋值,不更改索引计数(Refe ...

  6. javascrip中parentNode和offsetParent之间的区别

    首先是 parentNode 属性,这个属性好理解,就是在 DOM 层次结构定义的上下级关系,如果元素A包含元素B,那么元素B就可以通过 parentElement 属性来获取元素A. 要明白 off ...

  7. 面试问题5:const 与 define 宏定义之间的区别

    问题描述:const 与 define 宏定义之间的区别 (1) 编译器处理方式不同     define宏是在预处理阶段展开:     const常量是编译运行阶段使用: (2) 类型和安全检查不同 ...

  8. 关于背景图相对父容器垂直居中问题 —— vertical-align 和 line-height 之间的区别

       html css <div class="register-wrapper"> <div class="register"> &l ...

  9. 转:WCF、WebAPI、WCFREST、WebService之间的区别

    WCF.WebAPI.WCFREST.WebService之间的区别   注明:转载 在.net平台下,有大量的技术让你创建一个HTTP服务,像Web Service,WCF,现在又出了Web API ...

随机推荐

  1. php7新特性的理解和比较

    1. null合并运算符(??) ??语法: 如果变量存在且值不为NULL,它就会返回自身的值,否则返回它的第二个操作数. //php7以前 if判断 if(empty($_GET['param']) ...

  2. 5 个免费的受欢迎的 SQLite 管理工具

    SQLite Expert – Personal Edition SQLite Expert 提供两个版本,分别是个人版和专业版.其中个人版是免费的,提供了大多数基本的管理功能. SQLite Exp ...

  3. PHP 三元运算符?:的小坑

    $a = ['result'=123]; $b = !empty($a['result'])?:-1; $c = !empty($a['result'])?$a['result']:-1; var_d ...

  4. linux系统忘记root密码的解决办法--(超细致讲解!)

    在本博客中我采用虚拟机和radhet6.5作为示范: 首先:重新系统系统,在系统重新启动是未进入系统检查之前按下"e"键: 一定要在倒计时到0秒之前按下"e", ...

  5. P2672推销员

    传送 很抱歉之前用错误的思路写了一篇题解ρωρ 先说一下之前的思路. 对于每个住户,求出它的s[i]*2+a[i],寻找最大的住户m,然后按照a排序,如果m在前x大的住户里面,就选择前x大的住户,从中 ...

  6. ruby的DIR.pwd

    在ruby 中,以下代码可以获得当前脚本的绝对路径: require 'pathname' puts Pathname.new(__FILE__).realpath 将以上代码保存在test1.rb中 ...

  7. Note-Git:Git 笔记

    ylbtech-Note-Git:Git 笔记 1.返回顶部 ·  Git 分支管理: 主干/master.热修正/hotfix.预生产/release.开发develop.个人1(个人.小团队)/f ...

  8. [转载]Java中异常的捕获顺序(多个catch)

    http://blog.sina.com.cn/s/blog_6b022bc60101cdbv.html [转载]Java中异常的捕获顺序(多个catch) (2012-11-05 09:47:28) ...

  9. Dapper - a simple object mapper for .Net

    Dapper - a simple object mapper for .Net Release Notes Located at stackexchange.github.io/Dapper Pac ...

  10. 通过Samba练习metasploit的使用

    文章学习利用metasploit通过Samba3.X获取metasploitable2的shell,从而去熟悉metasploit的使用. 环境: kali IP:192.168.137.133 me ...