使用python的adbutils中的adb控制小米手机(鸿蒙os)进行一些基础操作

https://github.com/senzhk/ADBKeyBoard看了很多资料与很多人的文章,看了用appuim、uiautomator、Android studio的SDK等方法,但是都在配置时遇到了阻碍,无法进行下去,最终通过不断试错找到了一个可行的方案,似乎也没多少人说,于是在这里分享出来,也当作备份,方便我以后回顾,如果对你有用,给我点个赞吧,如果有问题或者建议,也欢迎在评论区讨论。

使用的库函数主要为adbutils,github中有详细的用例说明,访问GitHub网站国内可以使用steam++(watt toolkit)中的GitHub网络加速挂在后台,浏览器访问GitHub即可。

项目网址:GitHub - openatx/adbutils: pure python adb library for google adb service.

python安装第三方包的时候有些时候网速慢,推荐一个新人up主视频,两分钟就可以更换pip install的来源:

【【python安装】2-pip安装源配置】 https://www.bilibili.com/video/BV15G411B7y4/?share_source=copy_web&vd_source=7f5dd55bb6efbd534cc533fae9466da5

手机,我用的是小米CIVIS,打开开发者选项后,打开USB调试,用数据线连接到电脑上即可,注意要打开USB调试下面的USB调试(安全功能)选项,这样才能进行使用python模拟点击,我也是误打误撞才找到这个东西。

首先用命令行(win+r,输入cmd,按回车)运行pip install adbutils安装该库

pip install adbutils

然后打开你写python代码的地方进行编写代码

        如果电脑只接了一个手机,执行以下代码就可以链接到手机。

from adbutils import adb
d = adb.device()

        然后是一系列我用到的操作:

# 截屏
pilimg = d.screenshot()
pilimg.save("screenshot.jpg")

# 安装文件到手机上
d.install("apidemo.apk") # 建议使用绝对地址
d.install("http://example.com/apidemo.apk") # install from url
# raise AdbInstallError if something went wrong

d.send_keys("hello world$%^&*") # 在手机的光标处,输入框输入文本,此处不能输入中文,后面会讲怎么输入中文

# 模拟点击手机屏幕(100,100)处,(100,100)是手机上的坐标
d.click(100, 100)
d.click(0.5, 0.5) # center, should be float and <= 1.0

# 模拟滑动手机屏幕,从(10,10)滑倒(200,200),用时0.5s
d.swipe(10, 10, 200, 200, 0.5)

d.window_size()
# 返回手机屏幕大小,也就是分辨率大小

######下面的对我没用,常用的就上面这几个########

d.keyevent("HOME")#按下home 键,但我们的手机都没有home键

# get current app info
app_info = d.app_current()
print(app_info.package)
print(app_info.activity)
print(app_info.pid) # might be 0


d.volume_up()
d.volume_down()
# default times=1, If you want to adjust the volume multiple times, you can use:d.volume_up(times=xxx)

d.volume_mute()  # device mute



d.open_browser("https://www.baidu.com") # 用默认浏览器打开百度
# There still too many functions, please see source codes

# check if screen is on
d.is_screen_on() # 返回屏幕是否亮屏 True or False

# adb root,但是现在的手机好像很不好root,没用
d.root()

# adb tcpip <port>
d.tcpip(5555)

print(d.battery())  # get battery info
BatteryInfo(ac_powered=False, usb_powered=False, wireless_powered=False, dock_powered=False, max_charging_current=0, max_charging_voltage=0, charge_counter=10000, status=4, health=2, present=True, level=100, scale=100, voltage=5000, temperature=25.0, technology='Li-ion')

print(d.brightness_value)  # get brightness value, return int value in 0-255
d.brightness_value = 100  # set brightness value

# you can also set brightness mode
from adbutils import BrightnessMode
print(d.brightness_mode)  # output BrightnessMode.AUTO or BrightnessMode.MANUAL
d.brightness_mode = BrightnessMode.MANUAL  # set brightness mode is manual
d.brightness_mode = BrightnessMode.AUTO  # set brightness mode is auto

        获取手机屏幕的坐标可以在开发者模式中打开指针位置,直接搜索就可以找到。

有两点注意的:

                手机上安装好后要把输入法换成安装的这个,可能隐藏到了其他输入法里面。切换后,手机无法打字,所以切换后不能用搜索把输入法切换回来,最好先记住怎么换回来。输入中文命令如下:

text="替换为你的字符串"
d.shell(f"am broadcast -a ADB_INPUT_TEXT --es msg '{text}'")
  •  没有root怎么把文件传到手机里边

                第一个方案:可以直接把文件复制到电脑的文件资源管理器的手机里面的文件夹中。如果要批量操作,由于os.path没能作用于手机的文件夹,所以我用的是键鼠自动化,也就是pyautogui库粘贴到手机的文件夹的。用的是shutil库把文件复制到电脑的截切板。

                第二个方案:后面才找到的:https://blog.csdn.net/qq_56247418/article/details/139331757?spm=1001.2014.3001.5501 

参考链接:GitHub - senzhk/ADBKeyBoard: Android Virtual Keyboard Input via ADB (Useful for Test Automation)

GitHub - openatx/adbutils: pure python adb library for google adb service.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值