微信号:grzlwx

介绍:光荣之路官方资讯

【Android测试】Uiautomator之API举例详解(一)

2015-11-08 22:28 carter_d

吴老的《selenium webdriver 实战宝典》出版了!

简单的例子


  以一个简单的例子开始吧。我们完成一个 " 打开QQ,进入QQ空间,然后退出 " 的case。

  代码如下:

package QQ;

import java.io.IOException;

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

public class Test_qq extends UiAutomatorTestCase
{
public void testDemo() throws IOException, UiObjectNotFoundException {

// 启应用
Runtime.getRuntime().exec("am start com.tencent.mobileqq/com.tencent.mobileqq.activity.SplashActivity");
sleep(3000);

// 点击 "动态" tab
UiDevice device = getUiDevice();
int height = device.getDisplayHeight();
int width = device.getDisplayWidth();
device.click(width -50, height-50);
sleep(1000);

// 点击 "好友动态" 按钮
UiObject obj_1 = new UiObject(new UiSelector().description("点击进入好友动态"));
obj_1.click();
sleep(2000);

// 点击 左上角返回 "动态"按钮
UiObject obj_2 = new UiObject(new UiSelector().resourceId("com.tencent.mobileqq:id/ivTitleBtnLeft"));
obj_2.click();
sleep(1000);

// 点击菜单键
device.pressMenu();
sleep(1000);

// 点击退出qq
UiObject obj_3 = new UiObject(new UiSelector().text("退出QQ"));
obj_3.click();
sleep(1000);

// 点击确定
UiObject obj_4 = new UiObject(new UiSelector().text("确定"));
obj_4.click();
}
}

脚本的运行效果如下:

代码详解


  针对上面的例子的代码,我对每一句代码都做个详细的解释吧。

第一部分:启动应用

  exec() 这个函数的意思,相当于是在你在输入adb shell 命令后,在Android手机系统的命令行下运行。所以上面这句话的意思和我们打开cmd框输入" adb shell am start *** " 是一样的的效果。

  一般来说我们做App的自动化的时候,第一步都是把App打开,这个am start命令的就可以帮我们实现,类似与Monkeyrunner API中的startActivity() 函数。

第二部分:点击 “动态” tab

    

  UiDevice对象会在API部分详细讲解,它是一个我们在Uiautomator中经常使用的一个对象。

  这里我们首先用它获取到当前手机的宽和高的像素。然后观察到 “动态” tab位于右下方,因此在取得右下角的坐标点后,又进行了一个大概的坐标变化(这里为了简单只是向左和向上移动了50像素,如果要精确的可以进行等比转化),然后点击该坐标。

  这里之所以用点击坐标的方法,一方面是因为这个控件Uiautomator不支持用API获得实例(上一节所说的NAF Nodes,如下图),另一方面也是想说明在一些控件没有固定的id、text和desc的时候,我们应该怎么处理。

(未完待续)

(作者:carter_dream 来源:http://www.cnblogs.com/by-dream/p/4921701.html)


  
             
  
             
  
             
  
            
  
            
  
            
  
            
  
            
  
            
  
            
  
            
  
            
  
            

感谢作者,传播测试知识、技能与正能量!
分享测试生活,思考测试人生!欢迎来稿735821166@qq.com

光荣之路软件测试培训

官网:http://www.gloryroad.cn/

微信公众号:gloryroadtrain

性能测试QQ群:415987441
软件测试招聘QQ群: 203715128
自动化3群QQ: 371211499

 
光荣之路 更多文章 今天晚上的 linux 公开课- Awk 编程 7月28日(今天)晚上的 linux 公开课- shell编程 8月4日(今天)晚上的 linux 公开课- shell编程 9月1日(本周一)晚8点半,光荣之路Web自动化系列基础课—javascript第二讲 推荐本好书《与机器赛跑》
猜您喜欢 java工程优化——多线程下的单例模式 阿里版JVM 技术不应成为业务的工具,一个资深架构师的思辩 电商平台三只松鼠入驻微软云 游戏行业如何实现运维自动化与故障自愈