Android UiAutomator 测试框架源码分析
文章平均质量分 78
介绍Android系统提供的UI Automator测试框架的基本使用,分析UI Automator测试框架的实现原理
西二旗王员外
我的个人笔记,如果有幸对您有帮助,欢迎点赞…………
展开
-
Android UiAutomator测试框架源码分析导读
竟然有人做这个框架的源码分析,你以为我疯了吧,还真有点,当初想提升能力,又不知道要干啥,就扎进去UiAutomator框架中,想看看自己能否看懂源码?开始看的时候,感受道吃力的感觉了,之后不敢说如履平地,反正可以快速看懂一个对象、一个方法,做起需求来,也是妥妥的,一共写了几十篇文章,我当然建议你边读边看源码了,你最好对UiAutomator的API比较熟悉,比如UiDevice、UiObject、UiObject2等等用的很熟练那种,看起源码来,会爽歪歪。原创 2023-07-24 20:27:22 · 807 阅读 · 0 评论 -
Android之UI Automator框架源码分析(第九篇:UiDevice获取UiAutomation对象的过程分析)
PS:通过UiDevice的构造方法,得知UiDevice对象持有几个对象……后面这些对象的功能,都是分析的重点……另外UiAutomation对象在UiDevice中使用率颇高,所以我们接下来再学习getUiAutomation()方法的是如何实现并返回一个UiAutomation对象的……getUiAutomatrion()方法分析位于UiDevice类中的getUiAutomation()方法,返回值是UiAutomation对象 UiAutomation getUiAuto.原创 2024-02-26 19:55:01 · 1369 阅读 · 0 评论 -
Android之UiAutomator测试框架源码分析(第二十八篇:线程堆栈日志输出的封装,Tracer类分析)
(注意:本文基于UI Automator测试框架版本为2.2.0)前言 看了好多UiAutomator测试框架的源码,为了能在控制台更好的输出插桩线程执行的日志,Google工程师封装了Trace类,Trace类专门用于在调试,输出log用的,今天一起学习大牛对于日志的管理,如何更好的输出合理的日志Trace类结构public class Tracer {} Trace类位于androidx.test.uiautomator包中,一个继承Object类的功能类,它...原创 2021-06-24 23:46:33 · 586 阅读 · 1 评论 -
Android之UiAutomator测试框架源码分析(第二十七篇:用微信App解释Page Object Mode设计模式,简称POM模式)
Page Object Model,又称作Page Object Pattern,简称POM或者POP,中文称作页面对象模式,任何长期可维护的Ui功能自动化项目一定需要使用的设计模式之一,它解决了控件定位与控件操作的代码重复定义的情况基本历史 POM,来源于Web端的Ui功能自动化,是Selenium测试框架中提出的概念,...原创 2020-11-04 15:18:20 · 755 阅读 · 1 评论 -
Android之UiAutomator测试框架源码分析(第二十六篇:UiAutomation对象在哪里被创建的?)
UiDevice对象并没有直接持有UiAutomation对象,而是借助持有的Instrumentation对象,获取与使用UiAutomation对象提供的功能,再正式介绍UiAutomation对象之前,先看下UiDevice中对于UiAutomation对象的使用情况 UiDevice对象是通过它内部定义的一个静态方法getUiAumatation()获取一个UiAutomation对象,共计10处使用了UiAutomation对象提供的功能,涉及到获取屏幕信息、执行等待操作、设...原创 2020-07-27 21:28:43 · 982 阅读 · 0 评论 -
Android之UiAutomator测试框架源码分析(第二十五篇:Gestures的设计与基本实现分析)
Gestures类产生的对象,由UiObject2使用,UiObject2对象在创建时,持有了一个Gestrues对象,我们这篇学习Gestures类的一些设计。非线程安全的单例对象 Gestures类只能产生一个对象,并且只能在单线程下使用,作者显然预知此类是在单线程下使用,此时没有必要做成支持多线程,我们学习一下创建的单例对象的设计……1、私有的静态变量用于持有单例对象 // Singleton instance private static Gesture...原创 2020-08-29 10:09:46 · 360 阅读 · 0 评论 -
Android之UiAutomator测试框架源码分析(第二十四篇:ByMatcher相关功能介绍)
temp原创 2020-09-26 23:25:24 · 393 阅读 · 0 评论 -
Android之UiAutomator测试框架源码分析(第29篇:UiObject2中的点击控件功能深度分析)
前言UI自动化的三个重要组成部分为查找控件、操作控件、预期结果,UiObject2是如何做到操作控件的?通过本篇源码分析,我们将知道插装测试的点击原理原创 2021-08-25 22:47:10 · 1576 阅读 · 0 评论 -
Android之UiAutomator测试框架源码分析(第二十三篇:UiObject2提供的等待功能分析)
(注意:本文基于UI Automator测试框架版本为2.2.0)UiDevice提供了等待功能,UiObject2也提供了等待功能,本篇就看看UiObject2的等待功能是如何实现的?等待条件满足测试才会继续,等待功能非常重要,在测试用例中不可能不等待,因为Window的展示时机是非固定的,可能受设备本身的速度影响、可能受网络请求的影响!UiDevice对象持有的WaitMixin对象实际完成了等待功能的实现,这篇文章就来分析一下的WaitMixin中实现,以此知道UI Automator测试框架是如原创 2020-09-30 15:56:53 · 821 阅读 · 0 评论 -
Android之UiAutomator测试框架源码分析(第二十二篇:By相关功能介绍)
By类自身的对象无需我们去创建,因为它提供的功能,全部是通过类的方式就可以使用,没错,它提供的都是静态方法原创 2020-09-03 21:29:24 · 625 阅读 · 0 评论 -
Android之UiAutomator测试框架源码分析(第二十一篇:BySelector相关功能介绍)
BySelector对象负责持有用于定位View的属性信息,而它提供的相关方法(功能)基本上都是用于赋值这些属性信息的!我们这篇先学习BySelector对象持有的哪些字段、然后再去学习BySelector对象的方法!BySelector中的字段介绍...原创 2020-09-14 23:25:50 · 642 阅读 · 0 评论 -
Android之UiAutomator测试框架源码分析(第二十篇:Searchable接口的简单介绍)
官方:Searchable接口表示一个可以搜索匹配UI元素的对象实现Searchable接口的类表示具备搜索匹配UI元素(控件)的能力原创 2020-07-22 20:55:02 · 329 阅读 · 0 评论 -
Android之UiAutomator测试框架源码分析(第十八篇:StaleObjectException异常如何解决?)
StaleObjectException,这是使用UI Automator测试框架时,最常见的一个异常之一,每当View树中匹配的控件View对象被回收时,如果你使用的是UiObject2对象,就会出现该异常,我们看看官方对于该类的解答官方解答当使用表示控件的UiObject2对象时,很可能会抛出一个StaleObjectException异常,这是因为底层View已被销毁,在这种情况下,你就很有必要使用UiDevice的findObject(BySelector)方法再次获取一个新的UiO...原创 2020-07-04 23:10:06 · 3576 阅读 · 4 评论 -
Android之UiAutomator测试框架源码分析(第十九篇:Configurator对象分析)
(注意:本文基于UI Automator版本为2.2.2)在两种表示控件的对象中,UiObject与UiObject2,只有UiObject使用到了Configurator对象,而UiObject2压根没有使用Configurator对象,这篇我们想从Configurator的使用角度来分析源码,看看Configurator对象在哪里被创建,又是在哪被使用的?Configurator是什么?Configurator类产生的实例负责存储配置信息,官方介绍说通过Configurator对象,我们可以原创 2020-11-11 20:48:46 · 440 阅读 · 0 评论 -
Android之UiAutomator测试框架源码分析(第十七篇:UiObject2的legacySetText方法分析)
无意间看见legacySetText方法,它是hide修饰的,而且无处调用该方法原创 2020-07-21 21:46:25 · 579 阅读 · 0 评论 -
Android之UiAutomator测试框架源码分析(第十六篇:WaitMixin停顿功能分析)
(本文基于:'androidx.test.uiautomator:uiautomator:2.2.0') 在UI Automator测试框架中,等待功能很重要,么有等待功能,测试框架几乎将不能使用,WaitMixin类中封装的等待功能,UiDevice对象、UiObject2对象全部使用WaitMixin实现的等待功能,没错,他们都持有了WaitMixin对象,今天我们就学习学习WaitMixin是如何实现等待功能的,也就知道了UI Automator测试框架是如何实现等待功能的! ...原创 2020-07-11 17:04:36 · 393 阅读 · 0 评论 -
Android之UiAutomator测试框架源码分析(第十五篇:查找控件功能的集中介绍)
UI Automator框架、提供N种定位元素控件的方式,第一、UiDevice的findObject(UiSeletor)第二、UiDevice的findObject(BySelector)第三、UiObejct2的findObject(BySelector)第四、UiObject第五、UiCollection第六、UiScrollable...原创 2020-09-23 15:38:35 · 776 阅读 · 0 评论 -
Android之UiAutomator测试框架源码分析(第十四篇:Until类功能介绍)
(本文基于:'androidx.test.uiautomator:uiautomator:2.2.0') Until类,位于androidx.test.uiautomator包,内部定义了很多个静态工厂方法,这些工厂方法有个共同的特点,都会返回一个表示条件的对象,按照返回不同的条件对象再细分,则返回的对象有三个类别,一个是UiObject2Condition对象,表示与UiObject2对象的属性情况相关联的条件对象,一个是SearchCondition对象,表示与Search情况相关联的条件对象..原创 2020-07-24 19:50:13 · 639 阅读 · 0 评论 -
Android之UiAutomator测试框架源码分析(第十三篇:UiDevice类中的内部类EventForwardingFilter简单介绍)
(注意:本文基于UI Automator版本为2.2.2)在UiDevice类中有一个静态内部类EventForwardingFilter,它是做什么的呢?这就是这篇文章的意义类结构 private static class EventForwardingFilter implements AccessibilityEventFilter { private EventCondition<?> mCondition; public Event原创 2020-11-21 21:35:18 · 278 阅读 · 0 评论 -
Android之UiAutomator测试框架源码分析(第十二篇:作为等待功能的条件对象设计思想)
TEmp原创 2020-09-30 15:35:54 · 610 阅读 · 0 评论 -
Android之UiAutomator测试框架源码分析(第十一篇:UiDevice的wait方法与Until的findObject方法共同使用过程分析)
(注意:本文基于UI Automator测试框架版本为2.2.0) 相信对于UI Automator测试框架稍有熟悉的同学,一定知道UiDevice的wait方法会影响插桩测试的运行,而wait方法需要一个Condition对象,Until类中的各种静态工厂方法返回的都是Condition对象(表示影响插桩测试继续运行的条件),其中findObject2方法返回的是SearchCondition对象,SearchCondition对象继承了Condition,SearchCondition表示的是..原创 2020-08-12 21:54:27 · 1404 阅读 · 0 评论 -
Android之UiAutomator测试框架源码分析(第八篇:UiWatcher在框架中的自动触发过程分析)
UiObject、UiObject2均是不同的触发的时间,让我们探究一下触发逻辑原创 2020-07-22 20:28:21 · 625 阅读 · 0 评论 -
Android之UiAutomator测试框架源码分析(第七篇:UiObject与UiObject2触发UiWatcher代码时机探究)
UI Automator框架的两种重试模式第一、基于UiObject的重试模式第二、基于UiObject2的重试模式UiObject、UiObject2均通过UiDevice对象的方法获得,UiObject是在动作执行时进行重试、而UiObject2则是在首次匹配时进行重试,两种不同的重试模式对我们有什么影响?通过本文您跟达到目的!一、基于UiObject的重试模式,实际发生在动作执行时,即调用click等方法时二、基于UiObject2的重试模式,匹配元素时进行,即..原创 2020-09-08 20:48:32 · 710 阅读 · 0 评论 -
Android之UiAutomator测试框架源码分析(第八篇:UiDevice中的等待功能分析)
注意:本文基于API 29等待控件是Ui自动化执行过程中必不可少的要素,Uiautomator测试框架提供两种等待方式,分别实现在不同的类中a、位于UiDevice类中b、位于UiObject2类中原创 2020-07-27 19:05:20 · 1050 阅读 · 0 评论 -
Android之UiAutomator测试框架源码分析(第七篇:UiDevice中的观察者模式)
(本文基于:'androidx.test.uiautomator:uiautomator:2.2.0') 在UI Automator测试框架中,创建的UiDevice对象表示一台Android设备,UiDevice提供也提供了很多的功能,例如与操作控件相关的方法、操作屏幕的相关方法,更多请参看UiDevice基本介绍那篇文章。在与操作控件相关的方法中,有一组关于UiWatcher的方法,它们是注册UiWatcher方法、取消注册UiWatcher方法、以及运行所有已注册UiWatcher的方法,这..原创 2020-07-25 07:17:51 · 486 阅读 · 0 评论 -
Android之UiAutomator测试框架源码分析(第六篇:UiDevice的注册与反注册UiWatcher功能分析)
temp(共计六个方法,均在UiDevice下)原创 2020-07-05 00:03:45 · 675 阅读 · 0 评论 -
Android之UiAutomator测试框架源码分析(第五篇:UiDevice查找控件功能深度分析)
前言UI Automator测试框架中,UiDevice对象代表当前设备(手机、平板、电视、手表等等),在UI功能自动化测试中,查找控件作为测试过程中第一个动作,重要性不言而喻,如果没有查找到控件,就无法进行UI自动化测试,在UiDevice类中定义了查找控件的方法,3个重载的findObject方法+1个hasObject方法findObject(BySelector)0、这是我们最常用的一个方法,它接受一个BySelector对象,一般情况下我们需要使用By类的一系列的静态方法先获得By原创 2020-09-26 22:56:29 · 2147 阅读 · 1 评论 -
Android之UiAutomator测试框架源码分析(第四篇:UiDevice对象的创建过程分析)
UiDevice介绍UiDevice代表一个Android设备(手机、电视等),UiDevice的构造方法是default访问权限,我们只能通过它提供的静态的getInstance方法创建一个UiDevice对象,接下来就跟随源码看看UiDevice对象的创建0、创建UiDevice对象的静态方法getInstance,接受一个Instrumentation对象 public static UiDevice getInstance(Instrumentation instrumen.原创 2020-06-10 20:56:03 · 1641 阅读 · 1 评论 -
Android之UiAutomator测试框架源码分析(第三篇:UiDevice功能介绍)
(注意:本文基于UI Automator测试框架版本为2.2.0) UiDevice位于androidx.test.uiautomator包,使用UI Automator测试框架,可以说一定离不开UiDevice对象的使用,为什么说离不开UiDevice对象的使用?这是因为UiDevice提供的很多功能必须要在ui自动化测试中使用。UiDevice对象本身表示一个Android设备,因为Android系统在各种设备上都能运行,所以这个设备具体指的可以是一个手机、一个手表、一个电视、一个手环等等!..原创 2020-07-23 15:35:21 · 2288 阅读 · 1 评论 -
Android之UiAutomator测试框架源码分析(第二篇:创建UI Automator项目的3种方案)
UI Automator框架的代码,可以直接内置在商业App工程里的androidTest目录下,也可以单独开启一个工程,专门用于存放在androidTest目录下,本文将从零带你开始使用UI Automator在独立工程里的使用0、首先新建一个工程(请按截图操作)...原创 2020-06-02 17:19:28 · 2002 阅读 · 4 评论 -
Android之UiAutomator测试框架源码分析(第一篇:简要介绍与学习计划)
便可建立在本地 JVM 上运行的 JUnit 测试,或建立在设备上运行的插桩测试。当然,您也可以通过集成测试框架来扩展测试能力,例如集成Mockito可以在本地单元测试中测试 Android API 调用,集成Espresso或UI Automator可以在插桩测试中测试用户交互。您可以使用Espresso 测试记录器自动生成 Espresso 测试。本页提供了一些关于如何向...原创 2020-05-28 20:36:02 · 3606 阅读 · 1 评论