UI Automator 常用 API 整理

这篇具有很好参考价值的文章主要介绍了UI Automator 常用 API 整理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

主要类:

import android.support.test.uiautomator.UiDevice;

作用:设备封装类,测试过程中获取设备信息和设备交互。

import android.support.test.uiautomator.UiObject;

作用:所有控件抽象,用于表示一个Android控件。

import android.support.test.uiautomator.UiObjectNotFoundException;

作用:异常处理机制,在预期控件不存在时抛出。

import android.support.test.uiautomator.UiSelector;

作用:控制选择器,利用控制属性描述目标控件,用于控件匹配使用。

import android.support.test.uiautomator.Configurator;

所用:配置基类,用以控制测试过程的事件等超时、控件可见超时等。

import android.support.test.uiautomator.UiCollection;

作用:控件集合,用于控件遍历。

import android.support.test.uiautomator.UiScrollable;

作用:滚动控件,当目标控件存在于屏幕之外时使用。

import android.support.test.uiautomator.UiWatcher;

作用:界面观察者,用于处理弹窗中断逻辑。


### 定位控件 ```Java import android.support.test.uiautomator.By; 作用:可以更简洁的方式使用ByScelector 选择器。 用法: findObject(By.text(“text”))

import android.support.test.uiautomator.BySelector;
作用: BySelector 调用findObject 时匹配UI 元素
用法:
findObject(new BySelector().text(“text”))

<br>
### By类常用定位方法

```Java
/**
 * 通过文本 text 定位控件
 * 例如: text = "hello world"
 */
device.findObject(By.text("text"));
device.findObject(By.textContains("llo wor"));
device.findObject(By.textStartsWith("hello"));
device.findObject(By.textEndsWith("world"));

/**
 * 通过内容描述 content-dec 定位控件
 * 例如: desc = "content-dec"
 */
device.findObject(By.desc("content-dec"));
device.findObject(By.descContains("tent"));
device.findObject(By.descStartsWith("content"));
device.findObject(By.descEndsWith("-dec"));

/**
 *  通过包名package定位控件
 *  例如: package = "com.android.calculator2"
 */
device.findObject(By.pkg("com.android.calculator2"));

/**
 *  通过资源名 resource 定位控件
 *  例如: resource = "com.android.calculator2:id/digit_0"
 */
device.findObject(By.res("com.android.calculator2:id/digit_0"));

/**
 *  通过类名 class定位控件
 *  例如: class = "android.widget.Button"
 */
device.findObject(By.clazz("android.widget.Button"));


### UiDevice类常用方法

// home键
device.pressHome();

// back 键
device.pressBack();

// 显示最近打开并置于后台的App
device.pressRecentApps();

// 快速设置键
device.openQuickSettings();

// 打开通知
device.openNotification();

// 虚拟键盘,参考appium
device.pressKeyCode(17);

// 获得屏幕高度和宽度
int x = device.getDisplayWidth();
int y = device.getDisplayHeight();
String xs =String.valueOf(x);
String ys =String.valueOf(y);
Log.e("xxxxxxxxxx", xs);
Log.e("yyyyyyyyyy", ys);

// 向下滑显示通知栏
device.swipe(200,0,200, 300,180);
// 向左滑显示右一屏
device.swipe(20,400,460, 400,180);

// 获取当前应用活动名 和 包名
String activity = device.getCurrentActivityName();
String packagea = device.getCurrentPackageName();
Log.e("activity", activity);
Log.e("packagea", packagea);

// 休眠屏幕
device.sleep();
// 如果屏幕熄灭,点亮
device.wakeUp();


### UiObject2类常用方法

UiObject2 element = device.findObject(By.text("text"));

//清除元素,针对输入框
element.clear();

// 点击
element.click();

// 长按
element.longClick();

// 获取元素文本
element.getText();

//设置元素文本,相当于输入
element.setText("new text");

//获取元素scrollable属性,判断是否可滚动
element.isScrollable();

// 判断两个对象是否一致
UiObject2 element2 = device.findObject(By.text("text"));
element.equals(element2);

//获取元素content_desc属性
element.getContentDescription();

// 获取包名 package 属性
element.getApplicationPackage();

// 获取元素的子元素集合
element.getChildren();

// 获取元素的子元素的个数
element.getChildCount();

// 获取元素的class属性
element.getClassName();

// 获取元素的 resource-id 属性
element.getResourceName();

// 将元素拖动到指定位置
Point desPoint = new Point();
desPoint.x = 200;
desPoint.y = 20;
element.drag(desPoint, 2000);

// 点击并等待新窗口
element.clickAndWait(Until.newWindow(), 2000);


###Configurator类

Configurator configurator = Configurator.getInstance();

//动作,设置延时, 默认3s
configurator.setActionAcknowledgmentTimeout(1000);

//键盘输入,设置延时,默认0s
configurator.setKeyInjectionDelay(1500);

// 滚动,设置延时, 默认200ms
configurator.setScrollAcknowledgmentTimeout(2000);

// 空闲,设置延时,默认10s
configurator.setWaitForIdleTimeout(2500);

// 组件查找, 设置延时, 默认10s
configurator.setWaitForSelectorTimeout(3000);


###UiWatcher 类用法

final UiObject2 ui = mDevice.findObject(By.text("Messenger"));
//注册监听器
mDevice.registerWatcher("testWatcher", new UiWatcher() {
    @Override
    public boolean checkForCondition() {
        if(mDevice.hasObject(By.text("Contact"))){
            ui.click();
            Log.i("testWatcher", "监听器被触发了");
            return true;
        }
        Log.i("testWatcher", "监听器未被触发");
        return false;
    }
});

//重置监听器
mDevice.resetWatcherTriggers();

//移除监听器
mDevice.removeWatcher("testWatcher");

//运行所有的监听器
mDevice.runWatchers();


###UiScrollable 类的常用方法

UiScrollable scroll  = new UiScrollable( new UiSelector()
        .scrollable(true));

// 以步长为5快速向后滑动
scroll.flingBackward();

//以步长为5快速向前滑动
scroll.flingForward();

// 是否允许滚动获取具备UiSelector条件元素集合后, 再以text属性的查找对象
scroll.getChildByText(
        new  UiSelector().resourceId("android:id/title"), "About emulated device", true);
// 是否允许滚动获取具备UiSelector条件元素集合后, 再以content-desc属性搜索子元素
scroll.getChildByDescription(new UiSelector().text("text"), "content-desc", true);

//通过实例查找子元素,资源id为"android:id/title"下的第1个实例
scroll.getChildByInstance(new UiSelector().resourceId("android:id/title"),0);

// 获取执行搜索滑动过程中的最大滑动次数,默认常量为30
scroll.getMaxSearchSwipes();

//设置最大可扫动次数
scroll.setMaxSearchSwipes(50);

/**
 * 设置listview校准常量为0.15,即距离listview顶部15%和底部15%的区域不可滑动,只有控件中部70%的区域可滑动。
 * 当校准常量设置为0.5时,控件的可滑动区域为0,滑动的动作效果将和单击的效果一样。
 */
scroll.setSwipeDeadZonePercentage(0.15);
// 获得校准常量,校准常量默认值为0.1(10%)
scroll.getSwipeDeadZonePercentage();

//设置滚动方向设置为水平滚动
scroll.setAsHorizontalList();
// 设置滚动方向设置为纵向滚动
scroll.setAsVerticalList();

// 滚动到某个元素上
scroll.scrollIntoView(new UiSelector().text("abc"));
//滚动到文本对象所在位置
scroll.scrollTextIntoView("abc");

//自定义最大滚动次数,滚动到开始/结束位置
scroll.scrollToBeginning(30);
scroll.scrollToEnd(30);
//以步长(速率)5滚动到列表底部,最多滚动10次。
scroll.scrollToEnd(10, 5);


### UiCollection 类的常用方法

UiCollection  coll = new UiScrollable(new UiSelector()
.resourceId("android:id/title"));
// 查找元素下面子元素的数量
coll.getChildCount();
// 获取元素集合,再以text属性的查找对象
coll.getChildByText(new UiSelector().text("Display"), "Display");
// 获取元素集合,再查找其下面第1个元素
coll.getChildByInstance(new UiSelector().text("Display"), 0);
// 获取元素集合,再以content_desc属性的查找对象
coll.getChildByDescription(new UiSelector().text("Display"), "content_desc");
// 获得指定的子元素
coll.getChild(new UiSelector().text("aaa"));

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

UI Automator 常用 API 整理,软件测试,ui,功能测试,软件测试,自动化测试,程序人生,职场和发展

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

UI Automator 常用 API 整理,软件测试,ui,功能测试,软件测试,自动化测试,程序人生,职场和发展文章来源地址https://www.toymoban.com/news/detail-821665.html

到了这里,关于UI Automator 常用 API 整理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android自动化测试入门(二)UI Automator

    UI Automator是一个界面测试框架,支持跨进程,几乎可以模拟所有的人工操作。需要运行在4.3或者更高的系统版本上。它的测试代码的编写不依赖于目标应用的内部实现细节,非常适用编写黑盒自动化测试。 UI Automator 测试框架的主要功能包括: uiautomatorviewer: 用来扫描和分析

    2024年02月03日
    浏览(25)
  • 【饭谈】ChatGpt如果让软件ui都消失的话,那ui自动化测试该何去何从?

    “未来的软件长什么样?” 一位妹子产品经理问我:“你说说未来的软件ui是什么样的?听到这个问题我先是诧异了一下,随即陷入了沉思。” 我看着眼前的产品经理,她是一位比较年轻干练的女强人类型,1.65的身材不到100斤的体重显得格外瘦弱,精致的面庞总是让同事们

    2024年02月05日
    浏览(44)
  • 【软件测试】UI自动化框架,数据驱动 vs 关键字驱动怎么选

    让我们先从分析一端自动化测试案例的代码开始我们的旅程。以下是我之前写的一个自动化测试的小Demo。这个Demo 基于Selenium与Java 。 自动化测试小Demo 它要测试的东西其实是要看一下百度搜索能不能返回兴业银行的官网。我们分析一下这段代码都包含些什么东西。 第一,这

    2024年02月13日
    浏览(44)
  • 蓝蓝设计ui设计公司作品案例-中节能现金流抗压测试软件交互及界面设计

    中国节能是以节能环保为主业的中央企业。中国节能以生态文明建设为己任,长期致力于让天更蓝、山更绿、水更清,让生活更美好。经过多年发展,中国节能已构建起以节能、环保、清洁能源、健康和节能环保综合服务为主业的4+1产业格局,成为我国节能环保和健康领域规

    2024年02月04日
    浏览(40)
  • 软件测试之压力测试详细整理

    🍅 视频学习: 文末有免费的配套视频可观看 🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 压力测试是一种软件测试,用于验证软件应用程序的稳定性和可靠性。压力测试的目标是在极其沉重的负载条件下测量软件的健壮性和错误处理能力,并确

    2024年02月20日
    浏览(31)
  • 软件测试基础知识整理(八)- 软件缺陷

    目录 一、软件缺陷 1.1 缺陷定义 1.2 缺陷判定标准 1.3 软件缺陷产生的原因 1.4 软件缺陷产生的根源 1.5 软件缺陷信息  1.5.1 缺陷状态 1.5.2  缺陷严重程度  1.5.3 缺陷优先级 1.6 缺陷报告模板 1.7 缺陷报告注意事项 1.8 缺陷跟踪流程 1.9 缺陷数据分析关注的问题  软件或者程序中

    2024年02月06日
    浏览(47)
  • 软件测试面试题整理

    在进行Beta测试之前和之后,通常会进行以下几种测试: 内部测试(Internal Testing) 在Beta测试之前,开发团队会进行内部测试,对软件进行全面的测试。这个阶段包括单元测试、集成测试和系统测试,以验证软件是否满足预期的功能和质量标准。 单元测试(Unit Testing):在软

    2024年01月18日
    浏览(30)
  • 软件测试面试题 —— 整理与解析(1)

        😏 作者简介:博主是一位测试管理者,同时也是一名对外企业兼职讲师。 📡 主页地址:🌎【Austin_zhai】🌏 🙆 目的与景愿:旨在于能帮助更多的测试行业人员提升软硬技能,分享行业相关最新信息。 💎 声明:博主日常工作较为繁忙,文章会不定期更新,各类行业或

    2024年02月08日
    浏览(39)
  • UI Automator Viewer的使用

    uiautomatorviewer是android SDK自带的工具。通过截屏并分析XML布局文件的方式,为用户提供控件信息查看服务。该工具位于SDK目录下的tools子目录下。可以看到,它是通过bat文件启动的。 (提前打开、连接手机、启动Appium) 启动界面如下 单击:第二按钮(Device Screenshoot uiautomator

    2024年02月09日
    浏览(32)
  • 软件测试最全面试题及答案整理(2023最新版)

    目录 1、你的测试职业发展是什么? 2、你认为测试人员需要具备哪些素质 3、你为什么能够做测试这一行 4、测试的目的是什么? 5、测试分为哪几个阶段? 6、单元测试的测试对象、目的、测试依据、测试方法? 7、怎样看待加班问题 8、结合你以前的学习和工作经验,你认为如何

    2024年02月05日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包