安卓@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对应搜索键
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函数 , 我们来看下面这段代码:
当然上面这段代码实际上并没有任何意义 , 主要是为了给大家简单演示一下 。```python
def 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\")
```
推荐阅读
- 『4G』让路新机,安卓机皇降价2000元,跌至小米价
- 『安卓』澎湃s2将搭载在小米cc10上面?小米:以后谁还敢说小米是组装厂
- iphone12@iPhone 12最新曝光,CAD图将完成120Hz或将实现安卓危机来了
- 「华为」一个好消息,美国将发新规,一个坏消息,华为或被迫放弃安卓系统
- 「华为」华为EMUI11抢先亮相,基于安卓11系统打造,深度集成HMS
- 安卓▲鸿蒙系统下半年亮相?麒麟1020+屏下摄像头,将在华为Mate40实现
- 推哥科技爆料安卓优势不再?,3年了!iPhone最大短板终于去掉
- 「五步蛇」眼镜蛇和五步蛇谁更毒? 用实战看看究竟鹿死谁手
- 【智能手表】五款主流安卓智能手表横评:谁才是“手腕战争”的赢家?
- 中国财经聚焦用段时间后,哪个更保值?,近年苹果手机和安卓手机的价格很贵