Android uiautomator 自动化测试如何打log,方便查看测试结果

Android uiautomator 自动化测试如何打log,方便查看测试结果,第1张

互相学习android自动化测试,请关注我的微博:weibocom/ganchaojiang

一、一个BUG引发的问题

如果研发过程中有一个BUG:“不断的切换手机语言出现花屏现象”。这个问题我们如何验证呢?我想,最好的方式应该是自动化测试。

那么,自动化测试可以完成哪些任务呢?

简单的说,那些重复性的测试工作,都可以交给自动化完成:

1、设置手机的语言

2、添加、删除、收藏联系人

3、拨号、挂断

4、甚至发送短信、收藏短信

如果需要上面的功能,那么就开始自动化之旅吧。

二、Android自动化测试简单介绍

Android自动化测试主要分为Monkeyrunner、Rubotium、UiAutomator、Monkey(在我看来这个不算)等。主要特点:

1、Monkeyrunner:优点: *** 作最为简单,可以录制测试脚本,可视化 *** 作;缺点:主要生成坐标的自动化 *** 作,移植性不强,功能最为局限;

2、Rubotium:主要针对某一个APK进行自动化测试,APK可以有源码,也可以没有源码,功能强大;缺点是针对APK *** 作,而且需要对APK重新签名(有工具),因此 *** 作相对复杂;

3、UiAutomator:优点:可以对所有 *** 作进行自动化, *** 作简单;缺点:Android版本需要高于40,无法根据控件ID *** 作,相对来说功能较为局限,但也够用了;

4、Monkey:准确来说,这不算是自动化测试,因为其只能产生随机的事件,无法按照既定的步骤 *** 作;

由上面介绍可以有这样的结论:测试某个APK,可以选择Rubotium;测试过程可能涉及多个APK,选择UiAutomator;一些简单的测试,选择Monkeyrunner;

本文主要介绍UiAutomator的使用方法。

三、环境搭建

31、必备条件:

1、JDK

2、SDK(API高于15)

3、Eclipse(安装ADT插件)

4、ANT(用于编译生成jar)

32、简要步骤:

1、安装JDK并添加环境变量。

安装后,一定要通过JAVA_HOME的方式添加环境变量,即先建立JAVA_HOME变量,然后在path中添加%JAVA_HOME%\bin;

2、添加SDK环境变量。

一定要先建立ANDROID_HOME,然后把%ANDROID_HOME%\tools添加到path中;

3、安装Eclipse,并安装ADT插件。

4、安装ANT工具,并添加环境变量。

同样一定要先建立%ANT_HOME%变量,然后在path中添加%ANT_HOME%\bin

四、详细 *** 作

41、建立工程

用Eclipse新建Java Project,注意,不是Android Project!

42、添加JUnit库

next->Libraries->Add Library

43、添加Android库

Add External JARs:

找到路径Android-sdk\platforms\android-17\下面的androidjar和uiautomatorjar添加进来:

所有库添加完应该是这个样子:

44、在src中添加包,然后添加class文件

文件内容为:

[java] view plaincopy

package com;

import comandroiduiautomatorcoreUiObject;

import comandroiduiautomatorcoreUiObjectNotFoundException;

import comandroiduiautomatorcoreUiScrollable;

import comandroiduiautomatorcoreUiSelector;

import comandroiduiautomatortestrunnerUiAutomatorTestCase;

public class Runner extends UiAutomatorTestCase {

public void testDemo() throws UiObjectNotFoundException {

getUiDevice()pressHome();

// 进入设置菜单

UiObject settingApp = new UiObject(new UiSelector()text("Settings"));

settingAppclick();

//休眠3秒

try {

Threadsleep(3000);

} catch (InterruptedException e1) {

// TODO Auto-generated catch block

e1printStackTrace();

}

// 进入语言和输入法设置

UiScrollable settingItems = new UiScrollable( new UiSelector()scrollable(true));

UiObject languageAndInputItem = settingItemsgetChildByText(

new UiSelector()text("Language & input"), "Language & input", true);

languageAndInputItemclickAndWaitForNewWindow();

}

}

上面工程路径在e:\workspace\AutoRunner,类全名为comRunner,至于具体的作用我们现在不去关心。

45、找到SDK ID

CMD进入\Android-sdk\tools\目录下,运行命令:

android list

查看对应android版本的SDK的ID值,当前是60;

46、创建build文件

仍然在\Android-sdk\tools\目录下,运行命令:

android create uitest-project -n <name> -t <android-sdk-ID> -p <path>

比如:

android create uitest-project -n AutoRunner -t 60 -p e:\workspace\AutoRunner

上面的name就是将来生成的jar包的名字,可以自己定义,android-sdk-ID就是上面看到的6;path是Eclipse新建的工程的路径;运行命令后,将会在工程的根目录下生成buildxml文件。如果没生成,检查上面的步骤。

47、编译生成jar

CMD进入项目的工程目录,然后运行ant build,将使用ant编译生成jar,成功将会提示:

然后会在bin目录下生成jar文件。

48、push并运行jar

adb push <jar文件路径> data/local/tmp

adb shell uiautomator runtest <jar文件名> -c <工程中的类名,包含包名>

比如:

adb push e:\workspace\AutoRunner\bin\AutoRunnerjar data/local/tmp

adb shell uiautomator runtest AutoRunnerjar -c comRunner

然后就能看到手机会按照Runner中的步骤自动执行。具体效果就是,进入设置菜单,然后再进入“语言和输入法”菜单

五、代码分析

我们从几个最重要的对象来介绍。

51、UiDevice对象

getUiDevice()的方法可以得到一个UiDevice的对象,通过这个对象可以完成一些针对设备的动作:

click(int x, int y)

----在(x,y)表示的像素地方点击

pressBack()

pressDelete()

pressEnter()

pressHome()

pressMenu()

pressSearch()

----点击相应的按键

wakeUp()

----当手机处于灭屏状态时,唤醒屏幕,并解锁。

swipe(startX, startY, endX, endY, steps)

----在手机上滑动,从(startX,startY)到(endX,endY)。steps表示滑动的这个距离分为几步完成,数目越少,滑动幅度越大。

setOrientationLeft()

setOrientationRight()

----将手机向相应方向旋转。

setOrientationNatural()

----将手机旋转状态回归正常。

52、UiSelector对象

这个对象可以理解为一种条件对象,描述的是一种条件,经常配合UiObject使用,可以得到某个(某些)符合条件的控件对象。

checked(boolean val)

----描述一种check状态为val的关系。

className(className)

----描述一种类名为className的对象关系

clickable(boolean val)

>

输入法找不到的解决方法,一共就五种:

方法一:

右击任务栏空白处-工具栏-语言栏即可。

方法二:

首先打开文字服务

1 单击开始,单击 控制面板,然后双击“区域和语言选项”。

2 在语言选项卡上的“文字服务和输入语言”下,单击详细信息。

3 在首选项下,单击语言栏。

4,选择“关闭高级文字服务”复选框,,把里面的钩去掉

方法三:

其次设置语言栏的输入法

1 单击开始,单击控制面板,然后双击“区域和语言选项”。

2 在语言选项卡上,在“文字服务和输入语言”下,单击详细信息。

3 在首选项下,单击语言栏。

4 选择“在桌面上显示语言栏”复选框。

如果您安装了文字服务, 语言栏将自动显示。 但是,如果您关闭了语言栏,您可以使用此步骤重新显示它。 如果要将语言栏最小化到任务栏,右击任务栏上的语言图标,然后单击“设置",选择你要用的输入法添加就是了

把代码复制到treepanel就可以了,自己理解吧viewConfig:{//checkbox联动onCheckboxChange:function(e,t){varitem=egetTarget(thisgetItemSelector(),thisgetTargetEl()),record;if(item){record=thisgetRecord(item);varcheck=!recordget('checked');recordset('checked',check);if(check){recordbubble(function(parentNode){parentNodeset('checked',true);parentNodeexpand(false,true);});recordcascadeBy(function(node){nodeset('checked',true);nodeexpand(false,true);});}else{recordcascadeBy(function(node){nodeset('checked',false);});}}}},

在我们日常使用App过程中,经常会看到App界面有一些d窗提示(如下图所示)这样的提示框称之为Toast提示框,这些提示元素出现后等待3秒左右就会自动消失,那么我们该如何获取这些元素文字内容呢?

Appium 163开始支持识别Toast内容,主要是基于UiAutomator2,

因此需要在Capablity配置如下参数:

desired_caps['automationName']='uiautomator2'

安装appium-uiautomator2-driver: 安装命令如下:

cnpm install appium-uiautomator2-driver

安装成功后可以在 C:\Users\XXXX\node_modules看到对应的文件:

进入登录界面输入错误的用户名或者密码,获取Toast内容:

注意:Toast内容为中文时,顶部必须注释# coding=utf-8 否则会因为编解码导致文字识别失败。

前端支付宝蚂蚁森林怎么开发的如下,2016年8月,支付宝公益板块正式推出蚂蚁森林,用户步行替代开车、在线缴纳水电煤、网络购票等行为节省的碳排放量,将被计算为虚拟的“绿色能量”,用来在手机里养大一棵棵虚拟树。虚拟树长成后,支付宝蚂蚁森林和公益合作伙伴就会在地球上种下一棵真树,或守护相应面积的保护地,以培养和激励用户的低碳环保行为。

2018年10月23日,蚂蚁金服旗下支付宝官方宣布,全国绿化委员会办公室、中国绿化基金会已经与蚂蚁金服集团正式签署“互联网+全民义务植树”战略合作协议,支付宝蚂蚁森林种树模式将被正式纳入国家义务植树体系。

2019年1月,蚂蚁森林上线由全国绿化委员会办公室和中国绿化基金会发放的“全民义务植树尽责证书”

Appium是基于UIAutomator框架实现的。Appium测试进程与目标应用进程是分开的,所以Appium不能直接访问目标应用的各种element属性进行copy&paste,而只能模拟触发相应的事件对目标应用进行 *** 作。这就好比触摸屏监控驱动和目标应用的关系:驱动监控到用户点击屏幕的事件后,驱动就会去判断点击的位置是否是一个文本框,如果是的话,就去打开系统键盘给用户进行输入。

以上就是关于Android uiautomator 自动化测试如何打log,方便查看测试结果全部的内容,包括:Android uiautomator 自动化测试如何打log,方便查看测试结果、android8以后sdk自带的uiautomator直接打开,截取不到机器界面信息、uiautomator怎么随机往文本框里面写字等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9773935.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存