【Android自动化测试】Ui Automator技术(以对QQ软件自动发说说为例)

一、引言

  • 描述:UI Automator 是一个界面测试框架,适用于整个系统上以及多个已安装应用间的跨应用功能界面测试。这里我将会拿QQ软件的说说模块进行测试
  • 知识点:Ui Automator
  • 难度:初级
  • 效果
    在这里插入图片描述

二、了解(Android官方文档)

1、UiDevice 类

用于在运行目标应用的设备上访问和执行操作,同时还能进行以下操作:

  • 改变设备的旋转。
  • 按硬件键,如“音量调高按钮”。
  • 按返回、主屏幕或菜单按钮。
  • 打开通知栏。
  • 截取当前窗口的屏幕截图。

2、UI Automator API

  • UiCollection:枚举容器的界面元素,目的是为了计数,或者按可见文本或内容说明属性来定位子元素。
  • UiObject:表示设备上可见的界面元素。
  • UiScrollable:支持搜索可滚动界面容器中的项目。
  • UiSelector:表示对设备上的一个或多个目标界面元素的查询。
  • Configurator:可让您设置用于运行 UI Automator 测试的关键参数。

3、UI Automator 查看器

        查看器是非常重要的工具,主要作用:获取控件ID、Class等信息,用于配合UiDevice 类来进行测试。
        Ui Automator Viewer 工具位于 android-sdk/tools/bin 目录中。

三、使用

1、依赖

androidTestImplementation 'androidx.test.uiautomator:uiautomator:2.2.0'

2、代码

如第一章效果图,给出代码

@RunWith(AndroidJUnit4.class)
public class MainActivityTest {

    UiDevice device;

    @Before
    public void init() {
        // 初始化UiDevice实例
        device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());

        // 从主屏幕开始获取软件包名
        device.pressHome();

        //depth(0) 跳转到主屏幕
        String launcherPackage = device.getLauncherPackageName();
        device.wait(Until.hasObject(By.pkg(launcherPackage).depth(0)),
                1000);

        //获取Context 跳转到com.example.xch.android001包,进入android001软件
        Context context = ApplicationProvider.getApplicationContext();
        Intent intent = context.getPackageManager().getLaunchIntentForPackage("com.tencent.mobileqq");
//        Intent intent = context.getPackageManager().getLaunchIntentForPackage("com.sankuai.meituan");   // 美团测试
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
        context.startActivity(intent);
        device.wait(Until.hasObject(By.pkg("com.tencent.mobileqq").depth(0)),0);;
    }

    @Test
    public void test() throws InterruptedException {
        //自动化发表说说4
        device.findObject(By.text("动态")).click();  // 通过文字点击控件
        device.findObject(By.res("com.tencent.mobileqq","uae")).click();   // 通过id点击控件
        Thread.sleep(200);  // 延迟,给onCreate时间
        device.findObject(By.res("com.tencent.mobileqq","dsj")).click();
        Thread.sleep(200);
        device.findObject(By.res("com.tencent.mobileqq","hkl")).click();
        Thread.sleep(200);
        device.findObject(By.res("com.tencent.mobileqq","itv")).setText("云端new守夜人\nAndroid uiautomator 测试");
        device.findObject(By.res("com.tencent.mobileqq","ivTitleBtnRightText")).click();

    }

}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云端new守夜人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值