Settings主界面Activity使用的是Settings
Settings子界面Activity基本上都是使用SubSettings
Settings与SubSettings中都是空Activity,这里的空Activity指的是没有重写7大生命周期方法
Settings与SubSettings都是继承于SettingsActivity
主界面使用的layout是:settings_main_dashboard,子界面使用的layout是:settings_main_prefs
在SettingsActivity的onCreate方法中,通过判断当前是Settings还是SubSettings来确定用什么布局来显示
@Override
protected void onCreate(Bundle savedState) {
superonCreate(savedState);
mIsShowingDashboard = classNameequals(SettingsclassgetName());
setContentView(mIsShowingDashboard
Rlayoutsettings_main_dashboard : Rlayoutsettings_main_prefs);
}
这里会有两个问题,Settings作为主界面,加载的是settings_main_dashboardxml文件,下面是这个xml文件具体内容
uiautomator和appium都作为移动端自动化测试的工具那么他们有什么区别呢
1适用场景不同
uiautomator适用于adroid手机端自动化测试而appium不仅适用于Android手机,同样适用于ios手机
2作用域不同
在Android系统场景中,uiautomator可跨app,在手机ROM层面实现交互而appium只适合在应用内部,不能跨app
而且appium可以实现webview界面的自动化测试,而uiautomator却不能
3原理
appium是通过webDriver调起应用,以appium server作为桥梁,通过Bootstrapjar调用的android端uiautomator命令和ios端uiautomation/XCTest(ios 8以上)
uiautomator通过android instrumentation获取系统上下文,设备信息状态等
互相学习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)
>
以上就是关于怎么启动ui aotomator viewer全部的内容,包括:怎么启动ui aotomator viewer、android性能测试工具有哪些、bat启动程序命令startexexml等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)