4

Android 自动化交互实践

 3 years ago
source link: https://www.infoq.cn/article/L130OBJ4bsgTSWlqQ48Y
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Android 自动化交互可以代替人工完成重复性的工作,包括通过自动操作 App 进行黑盒测试和第三方 App 的自动运行。常见的自动化交互包含启动 App、view 的点击、拖拽和文本输入等。随着 App 安防能力的提升,要想实现完整流程的自动化交互变的越来越困难,本文主要探讨目前常见的自动化交互方案以及不同方案的优劣和应用场景。

1 传统执行脚本方案

ADB 是 Google 提供的能够和 Android 设备进行交互的命令行工具,我们可以编写脚本按照事先设计好的顺序,一个一个执行各个事件。ADB 执行操作需要事先获取界面元素的坐标(获取坐标方法可以利用 uiautomator 或者 dump xml 的方法,这里不是讨论的重点),然后把坐标传入作为命令行参数。

adb shell input tap 100 500

复制代码

上面命令是模拟点击屏幕坐标为(100, 500)处的控件。

adb shell input swipe 100 500 200 600

复制代码

上面命令是模拟手指在屏幕上向右下方滑动的一个操作。

adb shell input keyevent "KEYCODE_BACK"

复制代码

上面命令模拟返回按键的点击。

一次完整的自动化交互流程可由上面一系列命令顺序执行。

ADB 脚本方式的优点

  1. 实现简单,只需要获取目标元素的坐标等简单信息即可完成相关操作

  2. 可以实现对 webview 的自动化交互

ADB 脚本方式的缺点

  1. 灵活度不够,依赖于写死的坐标,App 界面变更引起的 view 位置变换会让脚本中相关命令无法执行,需要重新分析页面坐标

  2. 需要建立 ADB 链接或套接字链接,交互过程中网络状况的变化会影响自动化交互效果

ADB 脚本方式应用场景

  1. 交互简单、迭代频率低,安防级别比较低的 App

  2. webview 页面,flutter 开发的 App

2 Android 原生方法实现自动化交互


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK