【学以致用】android功能实现3---UIautomator 2.0(2)
来源:互联网 发布:淘宝先锋乒羽商城 编辑:程序博客网 时间:2024/06/05 22:59
上一部分提到:自动化测试可以简单分为获取测试工具,找到交互目标,进行操作行为,判断操作结果。这么4步,并且讲解了第一步UiDevice的初始化和使用。
接来下讲解后面3步:
2.找到交互目标:
交互目标常用有2种,UiObject和UiScrollable,分的对应着不用滑动的操作目标和需要滑动的操作目标。
UiObject是属于UIautomator,而UiObject2则是属于UIautomator 2.0。
UiObject2正常情况是通过UiDevice来寻找。
UiObject2 x= mDevice.findObject(BySelector);
从代码可以看到,第二步的重点是BySelector的查找,找到正确的目标,则x代表目标进行操作。
下面列举了14中比较常用的方式,其中最常用的是By.text By.clazz By.pkg By.res四种。
分别是显示的文字、组件的类名、文件的包名、在布局中的id名字,这四种基本涵盖所有的内容。
1,By.textContains(String substring)通过text包含字符进行选取
2,By.textStartsWith(String substring)通过text第一个字符进行选取
3,By.textEndsWith(String substring)通过text最后一个字符进行选取
4,By.text(String substring)通过text文本进行选取
5,By.text(Pattern textValue)通过text正则式进行选取
6,By.clazz(String className)通过class名称进行先取
7,By.clazz(String packageName, String className)通过package/class名称进行选取
8,By.clazz(Class clazz)通过class进行选取
9,By.clazz(Pattern className)通过正则class名称进行选取
10,By.pkg(String applicationPackage)通过package名称进行选取
11,By.pkg(Pattern applicationPackage)通过正则package名称进行选取
12,By.res(String resourceName)通过resource-id进行选取
13,By.res(String resourcePackage, String resourceId)通过package,resource-id名称进行选取
14,By.res(Pattern resourceName)通过正则resource-id进行选取
这14个只要填写了括号里面的内容,就形成了BySelector,
比如:
UiObject2 canlendar= mDevice.findObject(By.text(“日历”));
就寻找到了桌面上的canlendar的文件。如果桌面上有多个名为日历的文件,则寻找到的是BySelector找到的第一个。
于是对应的寻找就有找好几个的策略,比如短信应用里面有好几个名字为“领导”的短信,那么,
UiObject2 canlendar= mDevice.findObject(By.text(“领导”));
是找到第一个名为领导的目标。
List <UiObject2> canlendarList= mDevice.findObjects(By.text(“领导”));
则是所能找到的所有名为领导的目标群,区别在于mDevice后面跟的是findObject还是findObjects。寻找目标群体则多一个s。
对于canlendar,还可以获取其子部件:
getChildCount()获取其子部件的个数
getChildren()获取子部件的集合
还有一种获取的方案wait(UiObject2Condition<R> condition, long timeout),是指获取的时候,可以等待一段时间。
UiScrollable是获取可以滑动的目标,和UiObject2的区别,体现在第三部进行操作行为。
UiScrollable是使用UiSelector来获取目标,UiSelector和By,在使用上换汤不换药。也是通过显示的文字、组件的类名、文件的包名、在布局中的id名字等待来获取
new UiScrollable(new UiSelector().text( “xx” ));
new UiScrollable(new UiSelector().clazz( “com.android.xxx” ));
new UiScrollable(new UiSelector().pkg( “xxx” ));
new UiScrollable(new UiSelector().resourceIdMatches( “id” ));
其实UiAutomator2.0是在UiAutomator进行了优化的行为。
同样,BySelector也是比UiSelector更加优化的代码。
在使用时,建议优先选择UiObject2 x= mDevice.findObject(BySelector);
仅在面临带有多样化滑动操作时,才使用UiScrollable。
- 【学以致用】android功能实现3---UIautomator 2.0(2)
- 【学以致用】android功能实现4---UIautomator 2.0(3)
- 【学以致用】android功能实现2---UIautomator 2.0(1)
- 【学以致用】android功能实现1---分享功能
- UiAutomator实现打电话功能
- Android自动化测试(UiAutomator)——截图功能
- Android自动化测试(UiAutomator)
- Android自动化测试(UiAutomator)
- android uiautomator学习(二)主要类的功能简单介绍
- 基于UIAutomator+Jenkins Android自动化测试 实现
- 借助 UiAutomator 实现自动 Android* 测试
- 基于UIAutomator+Jenkins Android自动化测试 实现
- Android-Uiautomator:如何实现双击效果
- 专注应用(学以致用)
- UiAutomator Android 的自动测试框架(UiAutomator 快速调试)
- 学以致用
- 学以致用
- 学以致用
- 面向对象(下)
- vim中末行去掉^M
- 无法将类型为“Microsoft.Office.Interop.Excel.ApplicationClass”的 COM 对象强制转换为接口类型“Microsoft.Office.Interop.Ex
- 【数据结构】二叉树!!!
- VTK学习-坐标系统
- 【学以致用】android功能实现3---UIautomator 2.0(2)
- glide框架的简单使用
- 欢迎使用CSDN-markdown编辑器
- 语法制导的翻译
- Greendao的配置
- 文章资料汇总整理
- Pyhton 的一些注意点
- [Spring Boot实战系列]
- pyhton3.6 unittest