Android官方的uiautomator例子的实现

Android的自动化测试有很多框架,其中uiautomator是google官方提供的黑盒UI相关的自动化测试工具,case使用java写,今天实践了一下官方文档中样例程序,其中还是有一些小问题需要总结一下的。

1、使用ADT创建一个java的项目

    在创建项目的时候要加上JUnit与你使用的Android platforms中对应的android.jar与uiautomator.jar

image

2、新建一个包(我这里就只叫com)

3、再这个包下创建一个class,输入以下java代码,代码全是官方文档上的代码,除了最上面的package

package com;

import com.android.uiautomator.core.UiObject;
import com.android.uiautomator.core.UiObjectNotFoundException;
import com.android.uiautomator.core.UiScrollable;
import com.android.uiautomator.core.UiSelector;
import com.android.uiautomator.testrunner.UiAutomatorTestCase;

public class Runer extends UiAutomatorTestCase {   

   public void testDemo() throws UiObjectNotFoundException {   
      
      // Simulate a short press on the HOME button.
      getUiDevice().pressHome();
      
      // We’re now in the home screen. Next, we want to simulate 
      // a user bringing up the All Apps screen.
      // If you use the uiautomatorviewer tool to capture a snapshot 
      // of the Home screen, notice that the All Apps button’s 
      // content-description property has the value “Apps”.  We can 
      // use this property to create a UiSelector to find the button. 
      UiObject allAppsButton = new UiObject(new UiSelector()
         .description("Apps"));
      
      // Simulate a click to bring up the All Apps screen.
      allAppsButton.clickAndWaitForNewWindow();
      
      // In the All Apps screen, the Settings app is located in 
      // the Apps tab. To simulate the user bringing up the Apps tab,
      // we create a UiSelector to find a tab with the text 
      // label “Apps”.
      UiObject appsTab = new UiObject(new UiSelector()
         .text("Apps"));
      
      // Simulate a click to enter the Apps tab.
      appsTab.click();

      // Next, in the apps tabs, we can simulate a user swiping until
      // they come to the Settings app icon.  Since the container view 
      // is scrollable, we can use a UiScrollable object.
      UiScrollable appViews = new UiScrollable(new UiSelector()
         .scrollable(true));
      
      // Set the swiping mode to horizontal (the default is vertical)
      appViews.setAsHorizontalList();
      
      // Create a UiSelector to find the Settings app and simulate      
      // a user click to launch the app. 
      UiObject settingsApp = appViews.getChildByText(new UiSelector()
         .className(android.widget.TextView.class.getName()), 
         "Settings");
      settingsApp.clickAndWaitForNewWindow();
      
      // Validate that the package name is the expected one
      UiObject settingsValidation = new UiObject(new UiSelector()
         .packageName("com.android.settings"));
      assertTrue("Unable to detect Settings", 
         settingsValidation.exists());  
      UiObject reportBug = new UiObject(new UiSelector().text("Sound"));
      reportBug.clickAndWaitForNewWindow();
      UiObject soundValidation = new UiObject(new UiSelector()
      .text("Volumes"));
   assertTrue("Unable to detect Sound", 
		   soundValidation.exists());  
      
      getUiDevice().pressHome();
      
  }   
}

3、使用ant工具生成build.xml

    我这里在使用ADT自已的ant插件时提示

  build.xml:26: Class not found: javac1.8
  网上查了查,是插件与我java环境不符,下载最新的ant插件就可以了http://ant.apache.org/bindownload.cgi 
下载这个tar.gz包,解压,然后将apache-ant-1.9.4\bin目录添加到环境变量PATH中
然后cmd到android sdk的tools目录,使用andrlid list命令,记住你将要在模拟器中运行的(也是你刚刚导入android.jar与uiautomator.jar包时所在的platforms)
在cmd下使用
android create uitest-project -n <name> -t <android-sdk-ID> -p <path>
-n 为生成的jar包名称,自已任意定义,
-t 为上面查看到的值,我这里是1
-p 为输出路径,这里就是刚才创建的java项目所在的路径
android create uitest-project -n AutoRunner -t 1 -p D:\myAndroidStudy\androidTest
然后再cmd进入D:\myAndroidStudy\androidTest,使用ant build命令生成AutoRunner.jar文件
4、将这个AutoRunner.jar文件push到模拟器中
adb push AutoRunner.jar /data/local/tmp
5、使用adb shell uiautomator runtest AutoRunner.jar –c com.Runer 使Runer类运行
 
我的代码里又在官方基础上多了一个点击”sound”的操作与点击Home键操作
UiObject reportBug = new UiObject(new UiSelector().text("Sound"));
      reportBug.clickAndWaitForNewWindow();
      UiObject soundValidation = new UiObject(new UiSelector()
      .text("Volumes"));
   assertTrue("Unable to detect Sound", 
		   soundValidation.exists());  
      
      getUiDevice().pressHome();
这个其实也只是一个简单的玩具代码,没有什么意义,但是官方作为一个引导,其中也使用了一些最常见的接口。以后再深入的学习uiautomator

转载于:https://my.oschina.net/yangyanxing/blog/361769

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值