• UiAutomator自动化测试框架介绍


    UiAutomator自动化测试框架介绍

     

     环境搭建

    1         必要条件

    1.1       JDK

    1.2       SDK(API高于15)

    1.3       Eclipse

    2         简要步骤

    2.1       安装JDK并添加bin目录到环境变量

    2.2       添加SDK中的tools目录和platform-tools到环境变量

    2.3       安装Eclipse并安装ADT插件

      建立工程

    1         用eclipse建立Java project

    2         添加Junit库

     

    3         添加Android库

    找到sdk/platforms/android-19/下面的android.jar和uiautomator.jar并添加进来

     

    4         添加完成后如下图

     

     

      在工程中编写case

    1         分析Device当前界面的UI内容

    在编写Case之前,需要找到界面上不同控件的id,text,class或者description等等,来定位具体的点击事件。我们可以使用uiautomatorviewer工具来分析界面的组织架构。

     

    2         官方用例

    package com.uia.example.my;

    // Import the uiautomator libraries
    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 LaunchSettings 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());   
      }   
    }

      Build工程

    1         产生build工程所需要的配置文件

    <android-sdk>/tools/android create uitest-project -n <name> -t 1 -p <path>

           name: build jar文件的名字

           1: 使用命令android list可以查看

     

           path: 工程目录

    2         build工程jar文件

    2.1配置文件创建完成后,刷新工程目录,将会产生三个文件:build.xml、local.properties和project.properties

     

    2.2    打开build.xml,将default值改成build,如下图

     

    2.3    build工程

     

     

      运行工程

    1         导入

    将build好的jar文件,push到手机目录/data/local/tmp/下

    2         运行命令

    adb shell uiautomator runtest LaunchSettings.jar(build出来的文件) -c com.uia.example.my.LaunchSettings(class名)

           如果想要运行class类里具体的方法,可以在类后面加上#方法名即可

           如果想手机单独运行程序,不受数据线的约束,可以使用--nohup

      API详解

    1         UiDevice

    提供关于设备的状态信息。你也可以使用这个类来模拟设备上的用户的行为,如按方向键或者按菜单键

    如若获取UiDevice的对象,请使用UiDevice.getInstance()方法

    Public Methods

    void

    clearLastTraversedText()

    清除上一次输入的文本

    Clears the text from the last UI traversal event.

    boolean

    click(int x, int y)

    点击坐标

    Perform a click at arbitrary coordinates specified by the user

    boolean

    drag(int startX, int startY, int endX, int endY, int steps)

    从开始坐标拖拽到终点坐标位置

    Performs a swipe from one coordinate to another coordinate.

    void

    dumpWindowHierarchy(String fileName)

    dump当前界面的层次结构,并保存到/data/local/tmp/目录下

    Helper method used for debugging to dump the current window's layout hierarchy.

    void

    freezeRotation()

    禁用传感器,并且在当前界面冻结转屏

    Disables the sensors and freezes the device rotation at its current rotation state.

    String

    getCurrentActivityName()

    获取当前Activity的名字,此方法已被丢弃,不建议使用

    This method is deprecated. The results returned should be considered unreliable

    String

    getCurrentPackageName()

    获取当前包名

    Retrieves the name of the last package to report accessibility events.

    int

    getDisplayHeight()

    获取显示高度,以像素为单位

    Gets the height of the display, in pixels.

    int

    getDisplayRotation()

    返回当前的旋转值,0,90,180,270

    Returns the current rotation of the display, as defined in Surface

    Point

    getDisplaySizeDp()

     

    Returns the display size in dp (device-independent pixel) The returned display size is adjusted per screen rotation.

    int

    getDisplayWidth()

    获取显示宽度,以像素为单位

    Gets the width of the display, in pixels.

    static UiDevice

    getInstance()

    Java单例模式,获取UiDevice的对象

    Retrieves a singleton instance of UiDevice

    String

    getLastTraversedText()

    获取最后一次输入的text

    Retrieves the text from the last UI traversal event received.

    String

    getProductName()

    获取设备的名字

    Retrieves the product name of the device.

    boolean

    hasAnyWatcherTriggered()

    检查是否有监听器触发过

    Checks if any registered UiWatcher have triggered.

    boolean

    hasWatcherTriggered(String watcherName)

    检查某个特定的监听器是否触发过

    Checks if a specific registered UiWatcher has triggered.

    boolean

    isNaturalOrientation()

    检查设备是否是正常的竖屏状态

    Check if the device is in its natural orientation.

    boolean

    isScreenOn()

    检查屏幕是否亮起

    Checks the power manager if the screen is ON.

    boolean

    openNotification()

    打开notification通知栏

    Opens the notification shade.

    boolean

    openQuickSettings()

    打开quicksetting

    Opens the Quick Settings shade.

    boolean

    pressBack()

    按返回键

    Simulates a short press on the BACK button.

    boolean

    pressDPadCenter()

    轨迹球

    Simulates a short press on the CENTER button.

    boolean

    pressDPadDown()

    轨迹球

    Simulates a short press on the DOWN button.

    boolean

    pressDPadLeft()

    轨迹球

    Simulates a short press on the LEFT button.

    boolean

    pressDPadRight()

    轨迹球

    Simulates a short press on the RIGHT button.

    boolean

    pressDPadUp()

    轨迹球

    Simulates a short press on the UP button.

    boolean

    pressDelete()

    删除键

    Simulates a short press on the DELETE key.

    boolean

    pressEnter()

    回车键

    Simulates a short press on the ENTER key.

    boolean

    pressHome()

    home键

    Simulates a short press on the HOME button.

    boolean

    pressKeyCode(int keyCode, int metaState)

    keycode,参照keyevent

    Simulates a short press using a key code.

    boolean

    pressKeyCode(int keyCode)

    keycode,参照keyevent

    Simulates a short press using a key code.

    boolean

    pressMenu()

    menu键

    Simulates a short press on the MENU button.

    boolean

    pressRecentApps()

    recent键

    Simulates a short press on the Recent Apps button.

    boolean

    pressSearch()

    search键

    Simulates a short press on the SEARCH button.

    void

    registerWatcher(String name, UiWatcher watcher)

    注册一个监听器,当前指定动作被打断的时候,处理中断异常

    Registers a UiWatcher to run automatically when the testing framework is unable to find a match using a UiSelector.

    void

    removeWatcher(String name)

    移除之前注册的监听器

    Removes a previously registered UiWatcher.

    void

    resetWatcherTriggers()

    重置一个监听器

    Resets a UiWatcher that has been triggered.

    void

    runWatchers()

    强制运行所有的监听器

    This method forces all registered watchers to run.

    void

    setCompressedLayoutHeirarchy(boolean compressed)

    应用或禁用布局层次压缩

    Enables or disables layout hierarchy compression.

    void

    setOrientationLeft()

    通过禁用传感器,然后模拟设备向左转,并且固定位置

    Simulates orienting the device to the left and also freezes rotation by disabling the sensors.

    void

    setOrientationNatural()

    通过禁用传感器,然后模拟设备转到其自然默认的方向,并且固定位置

    Simulates orienting the device into its natural orientation and also freezes rotation by disabling the sensors.

    void

    setOrientationRight()

    通过禁用传感器,然后模拟设备向右转,并且固定位置

    Simulates orienting the device to the right and also freezes rotation by disabling the sensors.

    void

    sleep()

    锁屏

    This method simply presses the power button if the screen is ON else it does nothing if the screen is already OFF.

    boolean

    swipe(Point[] segments, int segmentSteps)

    在点阵列中滑动,5秒一步

    Performs a swipe between points in the Point array.

    boolean

    swipe(int startX, int startY, int endX, int endY, int steps)

    通过坐标滑动屏幕

    Performs a swipe from one coordinate to another using the number of steps to determine smoothness and speed.

    boolean

    takeScreenshot(File storePath)

    当前窗口截屏,并将其存储为PNG格式默认1.0f的规模(原尺寸)和90%的图片质量,参数为file类的文件路径

    Take a screenshot of current window and store it as PNG Default scale of 1.0f (original size) and 90% quality is used The screenshot is adjusted per screen rotation

    boolean

    takeScreenshot(File storePath, float scale, int quality)

    当前窗口截屏,可以自定义尺寸和图片质量

    Take a screenshot of current window and store it as PNG The screenshot is adjusted per screen rotation

    void

    unfreezeRotation()

    重新启用传感器,并且允许旋转屏幕

    Re-enables the sensors and un-freezes the device rotation allowing its contents to rotate with the device physical rotation.

    void

    waitForIdle(long timeout)

    等待当前应用程序处于空闲状态

    Waits for the current application to idle.

    void

    waitForIdle()

    等待当前应用程序处于空闲状态

    Waits for the current application to idle.

    boolean

    waitForWindowUpdate(String packageName, long timeout)

    等待窗口内容更新时间的发生

    Waits for a window content update event to occur.

    void

    wakeUp()

    唤醒屏幕

    This method simulates pressing the power button if the screen is OFF else it does nothing if the screen is already ON.

     

    2         UiSelector

    用于按照一定的条件,定位界面上的控件元素。UiObject对象通过UiSelector来选取

    Public Constructors

     

    UiSelector()

    构造方法

    Public Methods

    UiSelector

    checkable(boolean val)

    是否是可选择的属性

    Set the search criteria to match widgets that are checkable.

    UiSelector

    checked(boolean val)

    是否已经被选择

    Set the search criteria to match widgets that are currently checked (usually for checkboxes).

    UiSelector

    childSelector(UiSelector selector)

    子类

    Adds a child UiSelector criteria to this selector.

    UiSelector

    className(String className)

    类名

    Set the search criteria to match the class property for a widget (for example, "android.widget.Button").

    <T> UiSelector

    className(Class<T> type)

    泛型类名

    Set the search criteria to match the class property for a widget (for example, "android.widget.Button").

    UiSelector

    classNameMatches(String regex)

    类名正则表达式

    Set the search criteria to match the class property for a widget, using a regular expression.

    UiSelector

    clickable(boolean val)

    是否可以被点击

    Set the search criteria to match widgets that are clickable.

    UiSelector

    description(String desc)

    通过content-description来选取

    Set the search criteria to match the content-description property for a widget.

    UiSelector

    descriptionContains(String desc)

    通过content-description所包含的字符来选取

    Set the search criteria to match the content-description property for a widget.

    UiSelector

    descriptionMatches(String regex)

    通过content-description所符合正则表达式

    的字符来选取

    Set the search criteria to match the content-description property for a widget.

    UiSelector

    descriptionStartsWith(String desc)

    通过content-description开始字符匹配来选取

    Set the search criteria to match the content-description property for a widget.

    UiSelector

    enabled(boolean val)

    是否已经被enabled

    Set the search criteria to match widgets that are enabled.

    UiSelector

    focusable(boolean val)

    焦点属性

    Set the search criteria to match widgets that are focusable.

    UiSelector

    focused(boolean val)

    当前焦点属性

    Set the search criteria to match widgets that have focus.

    UiSelector

    fromParent(UiSelector selector)

    父类

    Adds a child UiSelector criteria to this selector which is used to start search from the parent widget.

    UiSelector

    index(int index)

    编号

    Set the search criteria to match the widget by its node index in the layout hierarchy.

    UiSelector

    instance(int instance)

    索引

    Set the search criteria to match the widget by its instance number.

    UiSelector

    longClickable(boolean val)

    是否可以被长按

    Set the search criteria to match widgets that are long-clickable.

    UiSelector

    packageName(String name)

    包名

    Set the search criteria to match the package name of the application that contains the widget.

    UiSelector

    packageNameMatches(String regex)

    正则包名

    Set the search criteria to match the package name of the application that contains the widget.

    UiSelector

    resourceId(String id)

    资源id

    Set the search criteria to match the given resource ID.

    UiSelector

    resourceIdMatches(String regex)

    资源id正则表达式

    Set the search criteria to match the resource ID of the widget, using a regular expression.http://blog.bettersoftwaretesting.com/

    UiSelector

    scrollable(boolean val)

    是否可以被滑动

    Set the search criteria to match widgets that are scrollable.

    UiSelector

    selected(boolean val)

    当前选择属性

    Set the search criteria to match widgets that are currently selected.

    UiSelector

    text(String text)

    根据text来选取控件或者应用程序

    Set the search criteria to match the visible text displayed in a widget (for example, the text label to launch an app).

    UiSelector

    textContains(String text)

    根据text中包含的字符串

    来选取控件或者应用程序

    Set the search criteria to match the visible text in a widget where the visible text must contain the string in your input argument.

    UiSelector

    textMatches(String regex)

    通过正则表达式来选取匹配的控件或者应用程序

    Set the search criteria to match the visible text displayed in a layout element, using a regular expression.

    UiSelector

    textStartsWith(String text)

    通过文本开始字符来选取

    Set the search criteria to match visible text in a widget that is prefixed by the text parameter.

    String

    toString()

     

    Protected Methods

    UiSelector

    cloneSelector()

    克隆UiSelector

      

     

    3         UiObject

    UiObject主要对对象进行操作

     

     

    Public Constructors

     

    UiObject(UiSelector selector)

    UiObject的构造方法

    Constructs a UiObject to represent a view that matches the specified selector criteria.

    Public Methods

    void

    clearTextField()

    清除编辑框中的文本

    Clears the existing text contents in an editable field.

    boolean

    click()

    点击事件

    Performs a click at the center of the visible bounds of the UI element represented by this UiObject.

    boolean

    clickAndWaitForNewWindow(long timeout)

    点击对象,等待新窗口的出现,

    参数为等待超时时长

    Performs a click at the center of the visible bounds of the UI element represented by this UiObject and waits for window transitions.

    boolean

    clickAndWaitForNewWindow()

    点击对象,等待新窗口的出现

    Waits for window transitions that would typically take longer than the usual default timeouts.

    boolean

    clickBottomRight()

    点击对象的右下角

    Clicks the bottom and right corner of the UI element

    boolean

    clickTopLeft()

    点击对象的左上角

    Clicks the top and left corner of the UI element

    boolean

    dragTo(UiObject destObj, int steps)

    拖拽到另一个对象处,步长可调整拖拽的速度

    Drags this object to a destination UiObject.

    boolean

    dragTo(int destX, int destY, int steps)

    拖拽到目标坐标处,步长可调整拖拽的速度

    Drags this object to arbitrary coordinates.

    boolean

    exists()

    对象是否存在

    Check if view exists.

    Rect

    getBounds()

    获取对象的矩形坐标左上角和右下角的坐标

    Returns the view's bounds property.

    UiObject

    getChild(UiSelector selector)

    获得对象的子类对象,可以递归获取

    子孙当中的某个对象

    Creates a new UiObject for a child view that is under the present UiObject.

    int

    getChildCount()

    获取下一级子类的数量

    Counts the child views immediately under the present UiObject.

    String

    getClassName()

    获取类名

    Retrieves the className property of the UI element.

    String

    getContentDescription()

    获取description

    Reads the content_desc property of the UI element

    UiObject

    getFromParent(UiSelector selector)

    从父类获取子类,按照UiSelector获取兄弟类

    Creates a new UiObject for a sibling view or a child of the sibling view, relative to the present UiObject.

    String

    getPackageName()

    获取包名

    Reads the view's package property

    final UiSelector

    getSelector()

    获得selector用于调试

    Debugging helper.

    String

    getText()

    获得对象的文本属性

    Reads the text property of the UI element

    Rect

    getVisibleBounds()

    返回可见视图的范围,如果视图是可见的,

    只有可见部分报告的范围

    Returns the visible bounds of the view.

    boolean

    isCheckable()

    检查对象的checkable属性是否为true

    Checks if the UI element's checkable property is currently true.

    boolean

    isChecked()

    检查对象的checked属性是否为true

    Check if the UI element's checked property is currently true

    boolean

    isClickable()

    检查对象的clickable属性是否为true

    Checks if the UI element's clickable property is currently true.

    boolean

    isEnabled()

    检查对象的enabled属性是否为true

    Checks if the UI element's enabled property is currently true.

    boolean

    isFocusable()

    检查对象的focusable属性是否为true

    Check if the UI element's focusable property is currently true.

    boolean

    isFocused()

    检查对象的focused属性是否为true

    Check if the UI element's focused property is currently true

    boolean

    isLongClickable()

    检查对象的longclickable属性是否为true

    Check if the view's long-clickable property is currently true

    boolean

    isScrollable()

    检查对象的scrollable属性是否为true

    Check if the view's scrollable property is currently true

    boolean

    isSelected()

    检查对象的selected属性是否为true

    Checks if the UI element's selected property is currently true.

    boolean

    longClick()

    长按

    Long clicks the center of the visible bounds of the UI element

    boolean

    longClickBottomRight()

    长按对象的右下角

    Long clicks bottom and right corner of the UI element

    boolean

    longClickTopLeft()

    长按对象的左上角

    Long clicks on the top and left corner of the UI element

    boolean

    performMultiPointerGesture(PointerCoords... touches)

    执行单手触控手势,可定义任意手势和形状

    Performs a multi-touch gesture.

    boolean

    performTwoPointerGesture(Point startPoint1, Point startPoint2, Point endPoint1, Point endPoint2, int steps)

    执行任意的双手触控手势

    Generates a two-pointer gesture with arbitrary starting and ending points.

    boolean

    pinchIn(int percent, int steps)

    手势操作,两点向内收缩

    Performs a two-pointer gesture, where each pointer moves diagonally toward the other, from the edges to the center of this UiObject .

    boolean

    pinchOut(int percent, int steps)

    手势操作,两点向外张开

    Performs a two-pointer gesture, where each pointer moves diagonally opposite across the other, from the center out towards the edges of the this UiObject.

    boolean

    setText(String text)

    在对象中输入文字

    Sets the text in an editable field, after clearing the field's content.

    boolean

    swipeDown(int steps)

    向下滑动

    Performs the swipe down action on the UiObject.

    boolean

    swipeLeft(int steps)

    向左滑动

    Performs the swipe left action on the UiObject.

    boolean

    swipeRight(int steps)

    向右滑动

    Performs the swipe right action on the UiObject.

    boolean

    swipeUp(int steps)

    向上滑动

    Performs the swipe up action on the UiObject.

    boolean

    waitForExists(long timeout)

    等待对象出现

    Waits a specified length of time for a view to become visible.

    boolean

    waitUntilGone(long timeout)

    等待对象消失

    Waits a specified length of time for a view to become undetectable.

     

    4         UiScrollable

     

     

    Public Constructors

     

    UiScrollable(UiSelector container)

    UiScrollable的构造方法

    Constructor.

    Public Methods

    boolean

    flingBackward()

    以步长为5的值向后滑动

    Performs a backwards fling action with the default number of fling steps (5).

    boolean

    flingForward()

    以步长为5的值向前滑动

    Performs a forward fling with the default number of fling steps (5).

    boolean

    flingToBeginning(int maxSwipes)

    滑动到最前面一屏

    Performs a fling gesture to reach the beginning of a scrollable layout element.

    boolean

    flingToEnd(int maxSwipes)

    滑动到最后一屏

    Performs a fling gesture to reach the end of a scrollable layout element.

    UiObject

    getChildByDescription(UiSelector childPattern, String text, boolean allowScrollSearch)

    是否允许滑动来查找具备描述条件的object对象

    Searches for a child element in the present scrollable container.

    UiObject

    getChildByDescription(UiSelector childPattern, String text)

    默认滑动来查找具备描述条件的对象

    Searches for a child element in the present scrollable container.

    UiObject

    getChildByInstance(UiSelector childPattern, int instance)

    获取具备UiSelector的子集,再从子集当中筛选想要的元素(不滚动)

    Searches for a child element in the present scrollable container that matches the selector you provided.

    UiObject

    getChildByText(UiSelector childPattern, String text, boolean allowScrollSearch)

    是否允许滑动来查找具备通过文本条件的object对象

    Searches for a child element in the present scrollable container.

    UiObject

    getChildByText(UiSelector childPattern, String text)

    默认通过滑动来查找具备通过文本条件的object对象

    Searches for a child element in the present scrollable container.

    int

    getMaxSearchSwipes()

    获取搜索滑动过程中的最大滑动次数,默认常量为30

    Gets the maximum number of scrolls allowed when performing a scroll action in search of a child element.

    double

    getSwipeDeadZonePercentage()

    默认常量为0.1,10%

    Returns the percentage of a widget's size that's considered as a no-touch zone when swiping.

    boolean

    scrollBackward(int steps)

    自定义步长向后滑动

    Performs a backward scroll.

    boolean

    scrollBackward()

    以默认步长55向后滑动

    Performs a backward scroll with the default number of scroll steps (55).

    boolean

    scrollDescriptionIntoView(String text)

    滚动到描述所在的位置

    Performs a forward scroll action on the scrollable layout element until the content-description is found, or until swipe attempts have been exhausted.

    boolean

    scrollForward()

    以默认步长55向前滑动

    Performs a forward scroll with the default number of scroll steps (55).

    boolean

    scrollForward(int steps)

    自定义步长向前滑动

    Performs a forward scroll.

    boolean

    scrollIntoView(UiSelector selector)

    滚动到元素所在的位置

    Perform a scroll forward action to move through the scrollable layout element until a visible item that matches the selector is found.

    boolean

    scrollIntoView(UiObject obj)

    滚动到对象所在的位置

    Perform a forward scroll action to move through the scrollable layout element until a visible item that matches the UiObject is found.

    boolean

    scrollTextIntoView(String text)

    滚动到文本对象所在的位置

    Performs a forward scroll action on the scrollable layout element until the text you provided is visible, or until swipe attempts have been exhausted.

    boolean

    scrollToBeginning(int maxSwipes)

    自定义扫动距离滚动到开始位置

    Scrolls to the beginning of a scrollable layout element.

    boolean

    scrollToBeginning(int maxSwipes, int steps)

    自定义扫动距离以及步长滚动到开始位置

    Scrolls to the beginning of a scrollable layout element.

    boolean

    scrollToEnd(int maxSwipes, int steps)

    自定义扫动距离以及步长滚动到结束位置

    Scrolls to the end of a scrollable layout element.

    boolean

    scrollToEnd(int maxSwipes)

    自定义扫动距离滚动到结束位置

    Scrolls to the end of a scrollable layout element.

    UiScrollable

    setAsHorizontalList()

    设置界面为水平滑动

    Set the direction of swipes to be horizontal when performing scroll actions.

    UiScrollable

    setAsVerticalList()

    设置界面为竖直滑动,此为默认值

    Set the direction of swipes to be vertical when performing scroll actions.

    UiScrollable

    setMaxSearchSwipes(int swipes)

    设置最大可扫描次数

    Sets the maximum number of scrolls allowed when performing a scroll action in search of a child element.

    UiScrollable

    setSwipeDeadZonePercentage(double swipeDeadZonePercentage)

    设置一个部件的大小,在滑动时,视为无接触区的百分比

    Sets the percentage of a widget's size that's considered as no-touch zone when swiping.

     

    5         UiCollection

    UiCollection继承UiObject,用于枚举一个容器的用户界面(UI)元素计数的目的,或安装子元素的文本或描述条件获取子元素对象。

    Public Constructors

     

    UiCollection(UiSelector selector)

    UiCollection的构造方法

    Public Methods

    UiObject

    getChildByDescription(UiSelector childPattern, String text)

    通过包含的条件寻找符合的子元素

    Searches for child UI element within the constraints of this UiSelector selector.

    UiObject

    getChildByInstance(UiSelector childPattern, int instance)

    通过包含的条件寻找符合的子元素

    Searches for child UI element within the constraints of this UiSelector.

    UiObject

    getChildByText(UiSelector childPattern, String text)

    通过包含的条件寻找符合的子元素

    Searches for child UI element within the constraints of this UiSelector.

    int

    getChildCount(UiSelector childPattern)

    递归计算符合条件的子元素的数量

    Counts child UI element instances matching the childPattern argument.

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    6         UiWatcher

     

    Public Methods

    abstract boolean

    checkForCondition()

    抽象方法,在监听程序中要实现此方法

    The testing framework calls this handler method automatically when the framework is unable to find a match using the UiSelector.

     

    监听器要在中断代码之前运行,我们首先要注册一个监听器,然后运行。注册监听器的方法,在UiDevice的API中有介绍,

    void

    registerWatcher(String name, UiWatcher watcher)

    注册一个监听器,当前指定动作被打断的

    时候,处理中断异常

    Registers a UiWatcher to run automatically when the testing framework is unable to find a match using a UiSelector.

     

     

     

     

    注册监听器的结构方法如下:

     

    UiDevice.getInstance().registerWatcher(“register watcher method”, new UiWatcher(){

    Public boolean checkForCondition{

    //在此方法体内定义监听的方法

    }

    });

     

    编写用例的注意事项

    1.每一个类都要继承UiAutomatorTestCase

     

    2.最好在每个类里都定义setUp和tearDown方法,用于初始化(最好都以Home界面为测试开始点)和结束测试(最好也以Home界面为测试结束点)

     

    3.因为此套测试框架式继承与Junit3的,所以每个方法最好都要以test开头,运行单个类时,程序会run以test开头的方法。当然这不是强制的,也可以以#方法run用例。

     

  • 相关阅读:
    线上redis禁止使用keys等时间复杂度高的命令
    组合索引的使用效果的总结
    Netty 断线重连解决方案
    可作为GC Root的对象
    在同一个sqlSession执行一个相同的查询时,Mybatis有一级缓存,不会去查数据库,由此引发的一个bug
    HashMap 和 currentHashMap JDK8总结
    Java程序导致服务器CPU占用率过高的问题排除过程
    一条sql执行的很慢的原因有哪些
    主键索引和非主键索引的区别
    黑马程序员
  • 原文地址:https://www.cnblogs.com/szy123618/p/4817782.html
Copyright © 2020-2023  润新知