Java+Uiautomator2⼿机UI⾃动化实战--1.Uiautomator2以及
U。。。
⼀什么是Uiautomator?
UIAutomator是android的⾃动化测试框架,可跨APP。是⾕歌在Android4.1版本发布时推出的⼀款⽤Java编写的UI测试框架。其最⼤的特点就是可以跨进程操作,我们可以使⽤UiAutomator框架提供的⼀些⽅便的API来对安卓应⽤进⾏⼀系列的⾃动化测试操作,如点击、滑动、键盘输⼊、长按以及常⽤的断⾔⽅法等。
Bootstrap是Appium在初始化的时候推送到安卓⼿机上的⼀个UiAutomator测试脚本,该脚本的唯⼀⼀个测试⽅法所做的事情是在⼿机端开启⼀个SocketServer(通信模块),⽤来监听Appium从PC端过来的命令发送给UiAutomator来执⾏处理。
WebDriver script:
  我们的测试脚本(java or python)
Appium:
  会⾸先开启⼀个监听4723端⼝的server,接收测试脚本发送过来的对应请求,再讲对应的请求发送给中间件Bootstrap.jar(注意这⾥的请求不是整个脚本⽂件,⽽是对应的命令请求,⽐如:点击⼀个元素就是⼀条请求)
Bootstrap.jar:
ui培训学校
  监听4724端⼝由appium发送过来的相关请求,并且将请求转换成UiAutomator可以识别的命令发给UiAutomator进⾏处理
⼆什么是Uiautomator2?
Uiautomator的升级版本
appium-uiautomator2-server模块的⽬标是使⽤Google的 API 重新实现的bootstrap模块。
建⽴在⾕歌的UIAutomator v1之上,⾕歌的UIAutomator v1 API现已破产并正式折旧。
Google UIAutomator v2修复了v1中的⼤部分问题。最重要的区别是将框架的升级过程与底层Android OS分离。
预置条件:此模块应⽀持Android 5.0(API Level 20)及更⾼版本
⽤法: 从Appium服务器是通过指定所需的能⼒要求automationName作为uiautomator2启动会话时。
如何运作呢?
当客户端请求创建新的AndroidDriver会话时,客户端将所需的功能传递给appium节点服务器。基于automationName所需功能的属
性,appium重定向到相应的驱动程序模块(默认情况下appium传递给appium-android-driver,如果没有automationName)
如果automationName是,uiautomator2则appium重定向到appium-uiautomator2-driver以创建新会话。
UIAutomator2驱动程序模块:创建会话,在设备上安装appium uiautomtor2服务器apks,启动服务器(Netty)并启动Netty服务器会话。
UIAutomator2服务器模块:⼀旦由驱动程序模块启动Netty服务器会话,服务器将继续在设备上侦听请求并相应地响应,直到调⽤DELETE SESSION。
由于UIautomator2创建会话,需要在设备上安装appium uiautomator2服务器的APK,这就是他的⼀个缺点,每次代码编译运⾏都要push安装⼀次APK,有点⼩⿇烦。
三. Uiautomator1.0和2.0的区别?
两者的主要区别如下
(a)2.0基于 Instrumentation, 可以获取应⽤Context,可以使⽤Android服务及接⼝。
(b)2.0基于 Junit4,测试⽤例⽆需继承于任何⽗类,⽅法名不限,使⽤Annotation进⾏, 1.0需要继承UiAutomatorTestCase,测试⽅法需要以test开头。
(c)2.0采⽤Gradle进⾏构建,1.0使⽤Maven或Ant。
(d)2.0新增UiObject2、Until、By、BySelector等接⼝。
(e)2.0输出到Logcat,1.0可以使⽤System.out.print输出流回显⾄执⾏端。
(f)2.0输出为APK,1.0输出为JAR。
简单来讲,2.0操作更⽅便了。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。