安卓@Python实战:一篇清晰易懂的Python操控手机APP攻略!( 三 )


adb shell am start -n com.kugou.android
4).停止应用程序
adb shell am force-stop 要停止的应用名称
这条指令会强制停止指定的应用程序 , 跟程序的启动略有差别 , 在停止应用时 , 使用adb shell pm list packages命令获取到的包名称就可以了 。 还是以小米的游戏中心为例 , 停止应用使用以下指令:
adb shell am force-stop com.kugou.android
5).点击指定位置
adb shell input tap x y
这条指令就很好理解了 , 模拟点击手机屏幕中的某个位置 , (x , y)是对应的位置坐标 。 在ADB中默认手机屏幕的左上角坐标是(0 , 0) , 右下角坐标是(x-max , y-max) 。
6).滑动手机屏幕
adb shell input swipe x_start y_start x_end y_end
这条指令的本质是使得坐标为(x_start y_start)的点移动到(x_end y_end)的坐标位置 , 以此来实现屏幕滑动的效果 。
7).输入文字信息
adb shell input text 需要输入的字符
这条指令没什么好说明的 , 选定对应位置 , 然后输入对应的字符即可 。
8).模拟手机按键
adb shell input keyevent code
现在的大部分手机除了常规键盘字符以外还有一些特殊按键 , 例如HOME键、音量+/- , 以及软键盘中有时会出现的确认键等等 , 这些按键的模拟就可以通过上面这条指令来实现 。
其中code对应的是特殊键的编号 , 下面举几个常用的例子(其他的特殊键还有很多):
  • 3对应的是HOME键
  • 24对应的是音量+
  • 25对应的是音量-
  • 66对应的是确认键
  • 4对应返回键
  • 26对应电源键
  • 84对应搜索键
KeyEvent官方文档可见:
9).获取元素位置细心的朋友现在可能会发现 , 上面提到的一些关于模拟点击、模拟输入的命令 , 都涉及到手机元素定位的问题 , 那么我们在实践中如何确定具体的坐标位置和元素信息呢?如果是Android端 , 这里一般建议使用uiautomatorviewer这个工具 , 它会随着SDK Tools一起安装 , 就在tools目录下 。
来看下面这幅图 , 手机连接成功后 , 点击左上角的绿色图标就会获取到手机的当前页面信息 , 然后在屏幕左侧可以点选任意位置或者元素 , 相关信息会在右侧屏幕中显示 。
是不是感觉跟用chrome分析网页非常类似 , 有了这些信息 , 再使用上面提到的几款指令操作手机就不是问题了 。

如果上述命令你觉得介绍的还不够多 , 不妨继续看看ADB官方文档介绍 。
https://developer.android.google.cn/studio/command-line/adb?hl=zh_cn
3. Python操作手机App
通常来讲 , 如果我们单纯想通过ADB命令来操控手机 , 一般建议借助Python脚本使其批量化、自动化运行 。
Python执行终端指令可以借助os.system函数 , 我们来看下面这段代码:
```pythondef execute(cmd):adb_str=\"adb shell {\".format(cmd)print(adb_str)os.system(adb_str)if __name__ == '__main__':execute(\"am start -n com.kugou.android/.app.splash.SplashActivity\")time.sleep(3)execute(\"input tap 263 515\")```
当然上面这段代码实际上并没有任何意义 , 主要是为了给大家简单演示一下 。


推荐阅读