zoukankan      html  css  js  c++  java
  • Android uiautomator实例使用

    转载自:http://blog.csdn.net/huiguixian/article/details/22398193

    Android测试工具中,Monkey Runner只要简单几个指令即可,但他的局限性在于都是基于像素位置操作,不具备移植性。

    而采用uiautomator编写的自动化测试工具则可以实现基于UiSelector选择直接操作uiObject来编写基于属性操作具备移植性的测试。

    注:

    android官方给出的版本条件如下,若低于这些版本请先下载新版本

    Android SDK Tools, Revision 21 or higher
    Android SDK Platform, API 16 or higher


    1. 首先我们先了解一下属性操作,并用uiautomatorviewer来分析一下应用UI组件。

    工具路径:<android-sdk>/tools/.

    左边为当前截屏,移动到上面有个红色的悬浮框表示当前选中节点,当前选中的会在右上角蓝色高亮,右下角显示即是此view的属性。

    至于这些有什么作用,稍后我们再看(请注意content-desc属性,我们稍后会用)。


    2. 打开eclipse,新建立一个Java Project,我这里建立的是MessageTestCase

    2.1 之后右键项目Property->Java Build Path->Libraries->Add Library->JUnit->JUnit3->Finish

    2.2 回到Property界面后还是选择Libraries->Add External JARs->选择Android SDK路径platformsandroid-**->选中Android.java和uiautomator.jar

    2.3 之后点击ok,关闭Property窗口


    3. 之后我们编辑code完成操作,主要操作是进入短信界面,编辑一条hello world

    //所有UI自动测试都要继承UiAutomatorTestCase 
    public class MessageTestCase extends UiAutomatorTestCase { 
    public void testDemo() throws UiObjectNotFoundException{ 
    //获取UiDevice对象 
    UiDevice device = getUiDevice(); 
    
    //点击home键操作 
    device.pressHome(); 
    
    //如截图中提到的,我们使用content-desc属性Apps选择所有应用列表 
    UiObject appsTab = new UiObject(new UiSelector().description("Apps")); 
    appsTab.click(); 
    
    //因为短信界面在第二个列表页面,所以我们可以先滑动一下 
    //通过scrollable属性来选定滑动view 
    UiScrollable appViews = new UiScrollable(new UiSelector().scrollable(true)); 
    appViews.setAsHorizontalList(); 
    appViews.scrollForward(); 
    
    //通过类名和Text找到短信应用图标,Text获取通过uiautomatorviewer 
    UiObject messageApp = appViews.getChildByText(new UiSelector().className(android.widget.TextView.class.getName()), "Messaging"); 
    //点击并等待打开短信应用 
    messageApp.clickAndWaitForNewWindow(); 
    
    //选择新建短信 
    UiObject newMessage = new UiObject(new UiSelector().description("New message")); 
    newMessage.click(); 
    
    //选择编辑信息 
    UiObject editMessage = new UiObject(new UiSelector().text("Type text message")); 
    editMessage.click(); 
    editMessage.setText("hello world!"); 
    } 
    } 

    4. 然后编译和发布uiautomator测试

    4.1 进入sdk tools目录使用如下命令:

    android.bat create uitest-project -n MessageTestCase -t 1 -p "C:Documents and Settings***workspaceMessageTestCase"
    其中MessageTestCase是工程名,第二个路径是工程所在路径

    然后会在工程所在路径生成一个build.xml文件

    4.2 使用如下命令设置Android Home

    set ANDROID_HOME=<path_to_your_sdk>

    4.3 然后需要下载ant,并设置ant为环境变量(也可以不设置,不过使用这个命令前加上路径)

    首先切换路径到工程所在目录,然后使用如下命令编译

    apache-ant-1.9.3inant build
    之后在工程的bin目录下回生成.jar文件

    4.4 push jar文件到一个目录,如

    adb push <path_to_output_jar> /data/local/tmp

    4.5 运行测试

    adb shell uiautomator runtest MessageTestCase.jar -c com.wjh.test.MessageTestCase

    作者:微微微笑
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    教务管理系统(node+express+mysql)
    poj 2485 Highways 超级大水题 kruscal
    HDU 1874 畅通工程续 + HDU 2544 最短路 最短路水题,floyd水
    HEX格式转BIN格式 MOT格式转BIN格式
    html的标签一共有多少个?
    同时存在n个线程(n>5),需要写入或者读取一个名为test.txt的文件
    poj 1258 AgriNet 水题三连发。。。又是kruscal
    招投标专家库
    poj 1789 kruscal水题
    仿Word自动套用格式,用CSS设置表格样式
  • 原文地址:https://www.cnblogs.com/miniren/p/4639047.html
Copyright © 2011-2022 走看看