Python调用adb shell

这篇具有很好参考价值的文章主要介绍了Python调用adb shell。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在Android开发中,ADB(Android Debug Bridge)是一个非常重要的工具。它可以让我们通过命令行或者其他的客户端与安装了ADB驱动的Android设备进行通信,并进行一些调试操作。

Python作为一门灵活强大的语言,很自然就成为了用来控制ADB的工具之一。本文将介绍如何使用Python调用ADB shell,在外部程序中控制Android设备。

  1. 安装ADB

首先需要在电脑上安装ADB。可以在终端执行以下命令来检查是否已经安装:

adb version

如果未找到该命令,请按照以下步骤来安装:

下载适用于您计算机操作系统的最新版 ADK 工具包并提取其内容。

启动 Android Studio 并打开 SDK 管理器:

确保打开“SDK 工具”选项卡,并选择“Android SDK Platform-tools”复选框。接下来单击“OK”按钮以下载和安装所选项目及其依赖项。

在完成设置后,请添加 adb 所在目录至 PATH 环境变量中。这样做可以让您从任意位置运行 adb 命令。

  1. 检查设备连接状态

在使用Python调用adb shell之前,必须先检查Android设备是否正确地连接到计算机上。可以通过执行以下adb命令来检查当前设备列表:

adb devices

如果设备已经与电脑连接,则会列出所有相关信息。

  1. 通过subprocess模块执行adb命令

Python的subprocess模块是一个非常有用而且方便操作外部进程和应用程序的库。我们可以使用它来执行各种各样的系统调用,包括运行adb命令。

下面是一个简单示例,展示如何利用subprocess模块在Python中执行adb shell命令:

import subprocess

output = subprocess.getoutput(‘adb shell’)

print(output)

这段代码会输出类似于下面这样的东西(不包含单引号):

‘mobile:/$’

这个输出表示你正处于一个虚拟移动平台shell环境里,而’$'则代表着这里是提示符。

注意:要想成功地连通 Python 和直接面向移动平台输入指令并接受响应时完全一致,我们需要注意标准输入流、标准输出流以及标准错误流之间关系和传输要求等问题。例如,在获取返回结果之前应该先阻塞等待读取语句结束信号等,以免造成数据混乱和无效API操作。

  1. 使用Python adb库

除了使用subprocess模块之外,还可以使用Python adb库。它是一个功能丰富而又易于使用的ADB工具,提供了对设备和模拟器的高级控制。可以直接在PyPI上安装此库:

pip install adb

调用adb库需要先连接到设备,并获取设备对象,在利用该类的send_command()方法发送指令即可实现运行AT指令等复杂SDK开发。

以下是一个简单示例程序:

import adb
a = adb.ADB()
a.command(“devices”)

  1. 控制Android设备输入输出

PyAutoGUI 是 Python 的第三方自动化框架,支持跨平台。它使得通过编写 Python 脚本能够自动地模拟鼠标和键盘操作、截屏、图像处理等功能。当然,这个库也支持 Android 设备操作。

首先需要在Android设备上安装 PyAutoGUI 的应用程序:https://github.com/asweigart/pyautogui-android/releases

下载 apk 文件并安装到您的 Android 设备中即可。打开应用之后,请允许它访问“无障碍”权限,以便能够更好地监视并控制其他应用程序。

下面是一个简单示例程序,展示如何使用 PyAutoGUI 在Android设备上控制输入输出:

import pyautogui as gui
import time

gui.click(500, 250)
time.sleep(1)
gui.typewrite(‘Hello, world!’)

以上代码会在Android设备的(500, 250)位置点击屏幕并输入 ‘Hello, world!’。

  1. 实现基础自动化测试

在实际项目中,经常会需要进行一些基础的自动化测试,例如检查某个页面是否正常进行渲染或者检查某个按钮是否能正常响应点击事件。这时候就可以结合以上介绍的内容来实现自动化测试。

以下是一个简单示例程序:

import subprocess
import time
import pyautogui as gui

连接到Android设备

output = subprocess.getoutput(‘adb devices’)
if ‘device’ not in output:
print(’😦 Device not found’)
exit()

打开浏览器页面

subprocess.call([‘adb’, ‘shell’, ‘am’, ‘start’,
‘-a’, ‘android.intent.action.VIEW’,
‘-d’, ‘http://www.baidu.com’])
time.sleep(10)

定位搜索框并输入关键字

x,y = gui.locateCenterOnScreen(‘search_box.png’)
gui.moveTo(x,y,duration=0.2)
gui.click()
gui.typewrite(‘python’)
gui.press(‘enter’)

以上代码会连接至Android设备,并启动系统默认浏览器后前往百度搜索Python相关信息。

  1. 总结

Python调用ADB shell已经成为一种非常普遍而又必要的方式去控制Android平台其主要优势在于精简快速查询状态;批量时延低最为突出以及流程引导,并能与同一或不同语言项目结合起来协作处理完整团队容器健康状况考核评估然后交付给真实环境平台完成系统封装等大任务请求。

在日常开发过程中,在特定开发场景下区分原生移动端调试技巧和深度定位搜索策略都可以优良传递价值思想使得核心竞争力倍增同时促进全球分布式软件服务发挥出最长远影响力。文章来源地址https://www.toymoban.com/news/detail-465886.html

到了这里,关于Python调用adb shell的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • adb bugreport 与adb shell getprop 详解

    😄作者简介: 小曾同学.com,一个致力于测试开发的博主⛽️, 如果文章知识点有错误的地方,还请大家指正,让我们一起学习,一起进步。😊 座右铭:不想当开发的测试,不是一个好测试✌️。 如果感觉博主的文章还不错的话,还请点赞、收藏哦!👍 今天主要分享在移动

    2024年02月10日
    浏览(26)
  • 可测含多进程的app-- python调用adb命令获取Android App应用的性能数据:CPU、GPU、内存、电池、耗电量(含python源码)

    python脚本通过os.popen()方法运行adb命令,获取性能数据,将性能数据保存在csv文件并算出均值、最大值、最小值。 本脚本可测试一个app包含多个进程的场景,可以获取 每个进程的性能数据 。 2.1 软件环境 具备python环境,Android环境 需要python库:os, csv, time, datetime, sys,time,panda

    2024年02月13日
    浏览(33)
  • adb shell命令

    前面给大家分享了Airtest,感兴趣的小伙伴,可以前往:手机自动化测试IDE—–Airtest实战篇、手机自动化测试IDE —– 手把手教你用Airtest模拟器来连接手机、手机自动化测试IDE—–Airtest基本操作方法、手机自动化测试IDE —– Airtest的安装和IDE控件详解,任君挑选。 ADB,中文名

    2023年04月18日
    浏览(36)
  • shell脚本,ADB

    Linux命令行命令是系统内置的命令或用户 自定义的脚本 (shell 脚本, .sh扩展名结尾 ),可以通过终端输入命令来执行。这些命令通常存储在Linux系统的/bin、/usr/bin、/sbin、/usr/sbin等目录下,也可以在$PATH环境变量中指定的其他目录中找到。Linux命令行命令是由shell解释器直接执

    2024年01月16日
    浏览(22)
  • adb shell dumpsys SurfaceFlinger

    adb shell dumpsys SurfaceFlinger 分析Android 系统图层 此命令输出的内容不较多,可以将输出内容重定向到一个文件中 如下的内容,过滤 HWC layers 另外过滤上一节提到的 WindowedMagnification ,可发现和窗口的层级树是对应的: 参考: 图形 硬件混合渲染器 (HWC) HAL 用于确定通过可用硬件

    2024年02月16日
    浏览(36)
  • adb shell下常见查看命令

    top查看进程信息 ls查看当前目录结构 ls -a 查看当前目录下所有文件 ps data 打印或设置当前系统时间 dumpsys 查看apk所在位置 pm list packages -f | grep apk包名 dumpsys package apk包名 查看栈顶activity dumpsys activity | grep “mFocusedActivity” dumpsys window | grep mCurrentFocus 查看window焦点的活动名称和

    2024年02月09日
    浏览(36)
  • adb shell 查看和修改电池信息

     命令: adb shell dumpsys battery Current Battery Service state: AC powered: false //false表示没使用AC电源 USB powered: true //true表示使用USB电源 Wireless powered: false       //false表示没使用无线电源 status: 2 //2表示电池正在充电,1表示没充电 health: 2 //2表示电池状态优秀 present: true    / /true表示已

    2024年02月08日
    浏览(52)
  • adb修改android系统时间 adb shell date必须要root权限

    以下是一个示例代码,展示如何实现这个格式化: 请注意, GetSystemTime 函数获取的是 GMT 时间,所以如果你需要的是本地时间的毫秒数,应该使用 GetLocalTime 函数替换 GetSystemTime 。同时,这种方法假定系统时区设置是正确的。如果系统时区设置不正确,计算出的时间可能会有

    2024年02月02日
    浏览(40)
  • Android - adb shell (查找文件 find )

    默认adb shell find . -name 文件名这样查找文件位置无法使用,如下。 记录下两种方法。 1、adb shell 进入 效果如下: 2、通过 busybox 查找文件 1)首先下载 BusyBox,下载地址为 Index of /downloads/binaries,记得选择对应设备架构的版本。adb shell cat /proc/cpuinfo 2)adb push 本地路径/busybox-

    2024年01月16日
    浏览(37)
  • 【Adb Shell】手机Tcpdump的安装方法

    作者使用的Ubuntu版本是 20.04 ,使用的手机是 Honor 70Pro 。 在使用Tcpdump抓包前, 首先需要对手机进行root ,之后在Ubuntu下安装adb,安装好后在命令行下输入adb的效果如下: 安卓版本的Tcpdump文件下载网址为:https://www.androidtcpdump.com/ 进入网址后,点击What You Need下的Downloads 之后进

    2024年02月11日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包