Skip to content

模拟器控制

模拟器控制

简介

在测试中,测试人员通常会依赖测试设备进行自动化调试。为了方便测试,常选择使用模拟器。模拟器分为原生模拟器和第三方模拟器两类。

原生模拟器是指由 Android Studio 提供的内置模拟器,通过 Android Studio 工具轻松创建。这种模拟器具有官方支持,稳定性高,而且操作相对直观。

除了原生模拟器,还有第三方模拟器如网易 MUMU 模拟器、夜神模拟器等,它们提供了更多的功能和更灵活的配置选项。这些模拟器在性能、调试工具以及对不同设备的模拟上有各自的特点,以满足测试人员不同的需求。

原生模拟器的特点

相较于第三方模拟器,原生模拟器在模拟器控制上具有一定的优势,因为它是由 Android 官方提供的工具,在使用上得到了广泛的官方支持,并且可以提供相对可靠的性能,在模拟器的控制上所体现的优势具体表现在如下几个方面:

  • 官方支持和更新:原生模拟器得到了 Android 官方支持,能够及时适应最新版本的 Android 系统版本。
  • 稳定性和一致性:由于原生模拟器是官方提供的工具,因此它们经过了更严格的测试和优化,具有较高的稳定性和一致性,使得开发者和测试人员更容易在模拟环境中重现和调试问题。
  • 系统集成:原生模拟器通常可以更好地与 Android Studio 等开发工具集成,提供更直观和便捷的控制界面。

原生模拟器

下载安装

官网地址:https://developer.android.google.cn/studio?hl=zh-cn

进入官网后,下滑后找到 Android Studio 下载 的内容。选择对应系统版本进行下载安装程序。下载后直接安装即可。

模拟器配置

Android 虚拟设备(AVD)是一种配置,它可以定义 Android 模拟器例如:Android 手机、平板电脑、Wear OS、Android 电视或车载设备的特征。AVD 管理器是一个可以从 Android Studio 启动的界面,它可以创建和管理 AVD。 要打开 AVD 管理器,要执行如下操作:

  • 打开 Android Studio
  • 选择 More Actions > Virtual Device Manager

一个完整的 AVD 包含硬件配置文件、系统映像、存储区域、外观和其他属性。在创建模拟器的时候要先下载对应的镜像文件,才可以创建成功。

打开设备管理界面后,如图点击 create device 进入创建模拟器的界面,配置以下内容,完成模拟器的创建:

  • 选择硬件配置:在 Select Hardware 窗口中,选择要模拟的设备类型,例如 Phone -> Pixel 3。
  • 选择系统镜像:在 System Image 页面,选择要安装的 Android 系统版本,点击 next。
  • 配置虚拟设备:在 AVD Configuration 窗口中,配置虚拟设备的参数,一般默认即可。

启动模拟器

启动模拟器有两种方式:

  • 通过 AndroidStudio:打开 Android Studio 选择 More Actions > Virtual Device Manager,点击已创建好设备后的运行按钮。
  • 命令行:使用 emulator 命令
  • emulator -list-avds:列出已有设备的名称。
  • emulator -avd <虚拟设备名称>:启动模拟器。

第三方模拟器 - mumu

安装

mumu模拟器官网 然后正常安装即可,作为第三方模拟器,并不需要配置太多信息

mumu 模拟器连接 adb

  • adb.exe connect 127.0.0.1:16384 (mumu12版本的接口)
  • mumu6 为例,查看 ADB 端口信息:D:\mumu-root\emulator\nemu\vms\nemu-6.0-x64-default找到其中的.nemu后缀文件,在里面搜索adb就能看到adb调试端口

模拟器控制

在使用 appium 进行自动化测试时,可以使用 Capability 中的参数 avd,运行时会自动启动 emulator 模拟器,参数的值为模拟器的名称。

注意:仅限原生模拟器,该配置不支持第三方模拟器。

Python 示例:

class TestSearch:

    def setup_class(self):
        caps = {}
        caps['platformName'] = 'Android'
        caps['platformVersion'] = '6.0'
        caps['deviceName'] = 'emulator-5554'
        caps['appPackage'] = 'com.xueqiu.android'
        caps['appActivity'] = 'com.xueqiu.android.common.MainActivity'
        caps['avd'] = 'Pixel_23_6'

        self.driver = webdriver.Remote("http://127.0.0.1:4723", caps)
        self.driver.implicitly_wait(5)

    def teardown_class(self):
        self.driver.quit()

    def test_mobile(self):
        pass

Java 示例:

public class TestSearch {

    private static AndroidDriver driver;

    @BeforeAll
    public static void setUp() throws MalformedURLException {
        // 初始化capability
        DesiredCapabilities caps = new DesiredCapabilities();
        // 设置 app 安装的平台(Android、iOS)
        caps.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android");
        // 设置 appium 驱动
        caps.setCapability(MobileCapabilityType.AUTOMATION_NAME, "UiAutomator2");
        // 设置设备名称
        caps.setCapability(MobileCapabilityType.DEVICE_NAME, "emulator-5554");
        // 设置 app 的包名
        caps.setCapability("appPackage", "com.xueqiu.android");
        // 设置 app 的启动页
        caps.setCapability("appActivity", "com.xueqiu.android.common.MainActivity");
        // 设置模拟器名称
        caps.setCapability("avd", "Pixel_23_6");

        URL remoteUrl = new URL("http://127.0.0.1:4723");
        driver = new AndroidDriver(remoteUrl, caps);
        driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(15));
    }

    @AfterAll
    public static void tearDown() {
        if (driver != null) {
            driver.quit();
        }
    }
    @Test
    public vodi testMobile(){
        // 具体的测试用例
    }
}

模拟器安装 APK

大部分模拟器安装 APK 都非常简单,直接将 APK 拖入模拟器即可安装成功。

但是也会存在高版本模拟器通常存在应用无法安装的问题。为了解决此问题,可以通过一些应用市场软件进行安装。

总结

  • 创建原生模拟器
  • 控制原生模拟器
  • 原生模拟器安装 apk
  • mumu模拟器