Appium基础学习之 | UiAutomator2.0使用

本文详细介绍如何使用Android Studio进行环境搭建,并利用UiAutomator2.0进行自动化测试。从下载安装Android Studio到配置环境,再到编写和运行UiAutomator2.0测试代码,提供了一个完整的流程指导。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、Android Studio安装

Android Studio是Google开发的一款针对Android开发的IDE,由于UiAutomator2.0基于Instrumentation运行,所以脚本需要打包成应用程序APK push到device执行,并且它还是依赖gradle构建,So,我可以理解为Google是在规范大家使用Android Studio。

Android Studio下载地址:https://developer.android.google.cn/studio/

安装过程就不多说了,直接下一步下一步安装即可(网上非常多教程)。但前提是已经安装好了SDK等android环境,参考《Appium基础学习之 | 环境搭建》。如不先安装SDK,在安装完Android Studio后进入SDK下载阶段,等待会非常痛苦,所以建议先安装好SDK环境。

二、UiAutomator2.0使用

1.新建项目

打开Android Studio,新建项目,在Activity选项时选择Add No Activity2

2.添加UiAutomator2.0的依赖

最新版的Android Studio默认的Instrumentation已经变成AndroidJunitRunner,在以前支持的是instrumentationTestRunner,在很多参考博文中依然还是可以看到instrumentationTestRunner的影子,这两个的区别在后面说Instrumentation时候一起说。

3.编写代码

创建项目后,在src\androidTest\java\xxx包路径下会自动成一个测试类ExampleInstrumentedTest

@RunWith(AndroidJUnit4.class)
public class ExampleInstrumentedTest {

    private UiDevice mdevice;
    private Context ct;

    @Before
    public void init(){
        //通过Instrumentation得到UiAutomation连上AccessibilityService
        mdevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
        ct = InstrumentationRegistry.getContext();
    }

    @Test
    public void useAppContext() {
        try {
            //在设备中得到com.main包的引用 
            Intent testIntent = ct.getPackageManager().getLaunchIntentForPackage("ymxh.main");
            //启动com.main应用的Activity 
            ct.startActivity(testIntent); 
            //等待窗口中,com.main应用窗口内容发生改变
            mdevice.waitForWindowUpdate("ymxh.main",5*2000);
            //执行点击操作
            mdevice.findObject(new UiSelector().text("Web自动化")).click();
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

ymxh.main这个应用是为了测试自己写的一个APK的包名,并且已经在设备中安装好了,一定要注意必须安装,否则startActivity会失败。下载地址:https://pan.baidu.com/s/16L3b4WFif50AaGFE-elufQ

(1)@RunWith(AndroidJunit4.class)表示以Junit4支持的运行器执行测试

(2)@Before、@Test是Junit4支持的注解

(3)得到UiDevice是通过调用getInstance()得到,入参的InstrumentationRegistry.getInstrumentation()得到的是一个Instrmentation实例

(4)通过Intent启用应用,当然也可以继续用UiAutomator1.0的方式启动应用,只是因为UiAutomator2.0是android项目,它在运行时可以使用Android非常丰富的API来协助测试完成

4.运行代码

在测试类中单机鼠标右键,选择Run

点击运行后,在设备中会请求安装2个APK应用,一个是主项目应用,一个是测试项目应用;安装完成后测试执行,执行的日志如下:

(1)运行开始后,首先Android Studio会构建项目形成2个APK,然后通过adb push把2个APK推送到设备安装

(2)安装完成后开始runing tests,通过adb shell am instrument命令运行

-w:与运行器配合使用,使用该参数表示等待运行器运行完成后返回,ymxh.uiautomation.uiauto2test.test/android.support.test.runner.AndroidJUnitRunner,表示使用AndroidJUnitRunner运行器来运行ymxh.uiautomation.uiauto2test.test下面的所有测试

-r:输入测试结果的形式

-e:后面带name value,如debug false表示debug模式关闭;class 'ymxh.uiautomation.uiauto2test.ExampleInstrumentedTest'指定运行的测试类,不指定则运行全部

三、埋伏笔

1.什么叫做运行器,比如AndroidJUnitRunner、instrumentationTestRunner?

2.UiAutomator2.0基于Instrumentation运行,好像非常复杂,这样做相对于UiAutomator1.0来说有什么优势呢?

3.adb shell am instrument命令的解析

三个问题都在后面说到Instrumentation一起分析,只有了解了instrumentation才能更好的说清楚这些问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值