Midscene 低代码实现Android自动化

一、传统Android自动化的挑战

传统Android自动化主要依赖于如UiAutomator、Espresso等框架。这些框架虽然在一定程度上实现了应用操作的自动化,但存在不少痛点。

  1. 复杂的脚本编写:开发人员需要深入掌握编程语言(如Java或Kotlin)以及特定自动化框架的API。例如,使用UiAutomator定位界面元素时,需精确编写基于资源ID、类名、坐标等复杂选择器。假设要点击一个按钮,代码可能如下:
UiObject2 button = device.findObject(By.res("com.example.app:id/button_id"));
if (button != null) {
   
   
    button.click();
}

这对于非专业开发人员或快速迭代的项目而言,编写和维护成本极高。
2. 脆弱的稳定性:界面的微小变化,如元素ID变更、布局调整,都可能导致自动化脚本失效。以一个简单的登录页面为例,若用户名输入框的ID从“username_input”改为“login_username_input”,所有依赖该ID的自动化脚本都需修改,否则无法正常运行。
3. 元素定位困难:面对复杂的UI结构,尤其是嵌套层级多、元素特征不明显的情况,传统定位方式难以精准找到目标元素。在一个包含多个相似列表项的页面中,准确点击特定列表项内的某个按钮,常常需要编写冗长且易错的遍历逻辑。

二、Midscene带来的革新

Midscene作为一款先进的自动化工具,有效克服了上述难题,具有以下显著优势:

  1. 自然语言交互:Midscene允许用户使用自然语言描述自动化任务,极大降低了编写门槛。例如,只需写下“打开淘宝应用,搜索手机,点击搜索结果中的第一个商品”,Midscene就能理解并执行相应操作,无需复杂代码编写。
  2. 强大的适应性:借助多模态AI推理能力,Midscene对界面变化有更强的适应性。即使界面元素ID、布局改变,只要其功能和视觉特征相对稳定,Midscene仍能基于语义理解找到目标元素并执行操作。
  3. 高效的元素识别:通过先进的视觉语言模型,Midscene能够快速且准确地识别屏幕上的各种元素,无论是标准UI组件还是自定义视图,都能精准定位,大大提高了自动化操作的准确性和效率。

三、Midscene实现Android自动化的具体步骤

安装 Node.js

安装 Node.js 18 或以上版本

准备 API Key

准备一个视觉语言(VL)模型的 API Key。

你可以在 选择 AI 模型 文档中查看 Midscene.js 支持的模型和配置。

安装 adb

adb 是一个命令行

Midscene Applitools 是一款用于视觉测试和监控的工具,在 Android 系统上有如下使用、功能、配置相关信息: ### 使用 - **测试环境搭建**:首先需要在 Android 开发环境中集成 Applitools SDK。通常是在项目的 `build.gradle` 文件中添加相关依赖。例如: ```groovy dependencies { implementation 'com.applitools:eyes-android-legacy:X.X.X' // 这里的 X.X.X 是具体的版本号 } ``` - **测试代码编写**:编写 Java 或 Kotlin 代码来调用 Applitools 的 API 进行视觉测试。以下是一个简单的 Java 示例: ```java import com.applitools.eyes.BatchInfo; import com.applitools.eyes.Eyes; import com.applitools.eyes.android.AndroidDeviceInfo; import com.applitools.eyes.android.AndroidDeviceName; import com.applitools.eyes.android.AndroidDriver; import com.applitools.eyes.android.AndroidPlatformVersion; import org.openqa.selenium.remote.DesiredCapabilities; import java.net.MalformedURLException; import java.net.URL; public class ApplitoolsAndroidTest { public static void main(String[] args) throws MalformedURLException { // 设置 Applitools API 密钥 Eyes eyes = new Eyes(); eyes.setApiKey("YOUR_API_KEY"); // 创建一个测试批次 BatchInfo batch = new BatchInfo("My Android Batch"); eyes.setBatch(batch); // 设置 Android 设备信息 AndroidDeviceInfo deviceInfo = new AndroidDeviceInfo( AndroidDeviceName.Pixel_3, AndroidPlatformVersion.V_10_0 ); // 配置 Appium 驱动 DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setCapability("platformName", "Android"); capabilities.setCapability("deviceName", "Pixel_3"); capabilities.setCapability("platformVersion", "10.0"); capabilities.setCapability("app", "path/to/your/app.apk"); // 初始化 Appium 驱动 AndroidDriver driver = new AndroidDriver(new URL("http://localhost:4723/wd/hub"), capabilities); try { // 打开测试会话 eyes.open(driver, "My Android App", "First Android Test", deviceInfo.getViewportSize()); // 执行测试步骤 // 例如,点击某个元素 driver.findElementById("com.example.app:id/button").click(); // 进行视觉检查 eyes.checkWindow("After click"); // 关闭测试会话 eyes.close(); } finally { // 释放资源 eyes.abortIfNotClosed(); driver.quit(); } } } ``` ### 功能 - **视觉验证**:可以对 Android 应用的界面进行全面的视觉检查,确保界面在不同设备、不同屏幕分辨率和不同操作系统版本下的显示一致性。例如,检查按钮的颜色、位置、文本内容等是否正确。 - **跨设备测试**:支持在多种 Android 设备上进行测试,包括不同品牌、型号和屏幕尺寸的设备。可以模拟不同的设备环境,确保应用在各种设备上都能提供良好的用户体验。 - **自动检测变化**:当应用的界面发生变化时,Applitools 能够自动检测到这些变化,并生成详细的报告,指出哪些部分发生了改变,方便开发人员及时发现和修复问题。 ### 配置 - **API 密钥配置**:在使用 Applitools 之前,需要在代码中配置 API 密钥,用于验证用户身份。可以在 Applitools 官方网站的账户设置中获取 API 密钥,并在代码中设置: ```java Eyes eyes = new Eyes(); eyes.setApiKey("YOUR_API_KEY"); ``` - **测试批次配置**:可以创建测试批次,将多个测试用例组织在一起。这样可以方便管理和查看测试结果,例如: ```java BatchInfo batch = new BatchInfo("My Android Batch"); eyes.setBatch(batch); ``` - **设备信息配置**:需要配置要测试的 Android 设备信息,包括设备名称、操作系统版本等。可以使用 `AndroidDeviceInfo` 类来设置: ```java AndroidDeviceInfo deviceInfo = new AndroidDeviceInfo( AndroidDeviceName.Pixel_3, AndroidPlatformVersion.V_10_0 ); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值