Android自动化测试框架:UiAutomator和UiAutomator2的区别与示例代码

UiAutomator和UiAutomator2是两种常用的Android自动化测试框架,它们都是由Google开发的。然而,它们之间存在一些关键的区别:

  1. API级别:UiAutomator框架在Android 4.3(API级别18)中引入,而UiAutomator2在Android 5.0(API级别21)中引入。

  2. 测试能力:UiAutomator只能测试Android系统应用和第三方应用,不能测试Web应用。而UiAutomator2不仅可以测试Android系统应用和第三方应用,还可以测试Web应用。

  3. 稳定性:UiAutomator2比UiAutomator更稳定,因为它使用了更新的Google Instrumentation测试框架。

  4. 支持的操作:UiAutomator2支持更多的用户操作,如多点触控、滑动等。

  5. 维护:UiAutomator已经不再维护,而UiAutomator2仍在持续更新和维护中。

示例:

  1. UiAutomator: UiAutomator是Android 4.3(API level 18)及以上版本的设备和模拟器提供的一种UI测试框架。它可以创建自动化测试,模拟用户与设备的交互操作,如点击、滑动、输入文本等。UiAutomator可以跨应用程序进行操作,包括系统和第三方应用程序。

示例代码:

import com.android.uiautomator.core.UiDevice;
import com.android.uiautomator.testrunner.UiAutomatorTestCase;

public class ExampleTest extends UiAutomatorTestCase {
    public void testDemo() throws Exception {
        UiDevice device = getUiDevice();
        // 按Home键
        device.pressHome();
        // ...
    }
}

 

 
  1. UiAutomator2: UiAutomator2是UiAutomator的升级版,它在原有的基础上增加了一些新的功能和改进。例如,UiAutomator2支持多窗口UI测试,可以更好地处理Android N及以上版本的新UI特性。此外,UiAutomator2还改进了测试的稳定性和可靠性。

示例代码:

import androidx.test.uiautomator.UiDevice;
import androidx.test.uiautomator.By;
import androidx.test.uiautomator.Until;
import org.junit.Test;
import static org.junit.Assert.assertTrue;

public class ExampleTest {
    private UiDevice device;

    @Test
    public void testDemo() throws Exception {
        device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
        // 按Home键
        device.pressHome();
        // 等待应用程序启动
        assertTrue(device.wait(Until.hasObject(By.desc("Apps")), 5000));
        // ...
    }
}

 


 
posted @ 2023-11-01 11:13  wem  阅读(326)  评论(0编辑  收藏  举报