Uiautomator 源码分析之控件获取

本文探讨了Uiautomator在Android自动化测试中的应用,通过分析`UiObject`的`description`查找控件并调用`clickAndWaitForNewWindow()`的方法实现控件交互。首先,`UiSelector`用于封装控件选择器,接着,通过`AccessibilityNodeInfo`遍历屏幕节点寻找目标控件,并利用`getVisibleBounds(node)`获取控件的矩形区域。最后,`getInteractionController().clickAndWaitForNewWindow()`执行点击操作并等待新窗口出现。整个过程涉及到了事件监听和反馈机制。
摘要由CSDN通过智能技术生成

Uiautomator一个常用脚本     

   UiObject allAppsButton = new UiObject(new UiSelector().description("Apps"));  

    //   模拟点击所有应用按钮,并等待所有应用界面起来

        allAppsButton.clickAndWaitForNewWindow();

分析第一步源码跟踪:

1、new UiSelector().description("Apps")找控件封装成UiSelect对象

    public UiSelector description(String desc) {    
        return buildSelector(SELECTOR_DESCRIPTION, desc);    //SELECTOR_DESCRIPTION是一个常量,代表使用何种方式找控件
    }
    private UiSelector buildSelector(int selectorId, Object selectorValue) {
        UiSelector selector = new UiSelector(this);
        if (selectorId == SELECTOR_CHILD || selectorId == SELECTOR_PARENT)
            selector.getLastSubSelector().mSelectorAttributes.put(selectorId, selectorValue);    //找父控件或子控件
        else
            selector.mSelectorAttributes.put(selectorId, selectorValue);    //mSelectorAttributes是一个集合类,把查找类型和值都放进集合
        return selector;
    }    //新建一个UiSelect对象,包含了该集合

2、看clickAndWaitForNewWindow()

    public boolean clickAndWaitForNewWindow() throws UiObjectNotFoundException {
        Tracer.trace();
        return clickAndWaitForNewWindow(WAIT_FOR_WINDOW_TMEOUT);    //WAIT_FOR_WINDOW_TMEOUT超时时间
    }
    public boolean clickAndWaitForNewWindow(long timeout) throws UiObjectNotFoundException {
        Tracer.trace(timeout);
        Accessibili
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值