• Ui"三重天"之重温Uiaumator(1)


    移动端自动化技术和接口自动化技术是接下来需要深究和拓展的两方面,基于之前的薄弱基础,重温一波,本篇内容便是android UI自动化框架Uiautomantor1.

    介于对移动端自动化并没有实际应用的尴尬处境,还是以<精通APP自动化测试>一书中的Uiaumator章节进行操作,也是将前面一篇落地。

    环境搭建:

      1、JDK

      2、Android SDK

      具体的环境变量配置便不再多记。

      开发编译工具为eclipse。(可自定义)

    众所周知,UI自动化技术核心点还是定位元素,此处当然也不例外,定位元素的方式有很多,有工具、代码等等;此处用的是Android SDK自带的UiautomatorViewer。

    (Android SDK安装成功)位置在${android_home} ools下:

      

    启动成功:

      

    这个是该出识别页面元素的控件,当然也有很多控件可以识别,此处便以Uiautomator Viewer为例。切记该控件是不能满足所有的页面元素识别条件的。

    操作步骤:

    1、环境搭建成功(JDK 和android SDK),下载android版本。

    2、手机连接电脑,adb devices确认是否连接成功。(手机打开开发者模式,USB调试)

      

    3、打开Uiautomator Viewer,点击该按钮,让控件同步手机页面信息。

      

      

      可以看到,同步到了手机页面元素(微信登录页面)

    4、使用eclipse创建类,切记类继承UiAutomatorTestCase类

      插入一段简单的代码:(点击、等待)  

       

     1 package com.kaola;
     2 
     3 import com.android.uiautomator.core.UiDevice;
     4 import com.android.uiautomator.core.UiObject;
     5 import com.android.uiautomator.core.UiObjectNotFoundException;
     6 import com.android.uiautomator.core.UiSelector;
     7 import com.android.uiautomator.testrunner.UiAutomatorTestCase;
     8 
     9 import android.os.RemoteException;
    10 
    11 public class login extends UiAutomatorTestCase {
    12     public void testlogin() throws UiObjectNotFoundException,RemoteException{
    13         UiDevice device = getUiDevice();
    14         device.pressHome();
    15         device.wakeUp();
    16         
    17         UiObject kaola = new UiObject(new UiSelector().className("android.widget.TextView").index(8));
    18         assertTrue("There has not be found",kaola.exists());
    19         kaola.click();
    20         
    21         
    22         sleep(2000);
    23         
    24         UiObject login = new UiObject(new UiSelector().className("android.widget.RelativeLayout").index(1));
    25         assertTrue("There has not be Find", login.exists());
    26         login.click();
    27         
    28         sleep(3000);
    29         
    30         UiObject login1 = new UiObject(new UiSelector().className("    android.widget.ImageView").resourceId("com.beihui.market:id/iv_tab_fg_news_web_user"));
    31         assertTrue("There has not be Find", login1.exists());
    32         login1.click();
    33     }
    34 }

    一一来进行分解:

    		UiDevice device = getUiDevice();
    		device.pressHome();
    		device.wakeUp();  

    这段代码其作用在于获取到设备、点击home键和唤醒屏幕。

    UiObject kaola = new UiObject(new UiSelector().className("android.widget.TextView").index(8));
    		assertTrue("There has not be found",kaola.exists());
    		kaola.click();  

    实例化kaola 对象,className为对象类名,index为索引。

    此处有好多中定位方法,但是切记要唯一!

    下方的assertTrue为断言

    实例化对象click,点击!

    脚本的灵活度还是需要自己去慢慢积累。

    5、脚本编写完成后,为项目创建build.xml等文件。

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

    此处的<android-sdk-ID> 可使用android list target来进行获取。

    6、创建成功时候,刷新项目,修改build.xml文件的help为build,使用ant进行构建。

      

    修改完成,右键build.xml文件Ant build进行构建。

     

    将文件构建成jar包。

    7、将jar包发送至手机,运行。

      发送命令:adb push D:eclipsework_spaceUiautomatorinUiautomator.jar data/local/tmp

      运行命令:adb shell uiautomator runtest Uiautomator.jar -c com.kaola.login

     ----------------------------------------------------------------------------------------------------------------------------------

    OK、日后有关Uiaumator、或者移动端自动化有心得便记下来。

  • 相关阅读:
    c++ list_iterator demo
    模板元编程例子
    !a && !b 和 !(a || b) 的故事
    简明解释算法中的大O符号
    重构oceanbase的一个函数
    正则表达式识别汉字
    编写易于理解代码的六种方式
    Linux下的tar压缩解压缩命令详解
    2013 年 —— Facebook 在开源方面的工作介绍
    Kent Beck揭秘Facebook开发部署流程
  • 原文地址:https://www.cnblogs.com/richered/p/9258084.html
Copyright © 2020-2023  润新知