Python调用adb命令时如何传入变量实现屏幕随机点击
解决方案
你的核心问题是字符串里写的变量名不会被自动解析为实际生成的数值,需要手动把随机生成的坐标、时长参数嵌入到adb命令中,另外原代码漏了time模块的导入,修正逻辑如下:
可直接运行的代码
import os import time import random import subprocess # 生成随机等待时长、随机点击坐标 xpixel = random.randint(359, 402) ypixel = random.randint(256, 368) trest = random.randint(10, 16) print(f"等待 {trest} 秒后执行点击") time.sleep(trest) print(f"目标点击坐标:x={xpixel}, y={ypixel}") # 推荐写法:用subprocess传参,无需手动处理转义,执行更稳定安全 subprocess.run( ["adb.exe", "shell", "input", "tap", str(xpixel), str(ypixel)], check=True ) # 如果你坚持用os.system,用f-string拼接变量即可,注意把/k换成/c避免cmd窗口残留 # os.system(f'cmd /c adb.exe shell input tap {xpixel} {ypixel}')
关键逻辑说明
- 字符串嵌入变量用Python的f-string语法:字符串前加
f标记,需要替换变量的位置用{变量名}包裹,运行时会自动替换为变量的实际值,最终生成类似adb.exe shell input tap 375 291的符合adb要求的命令格式 - 原命令里的
cmd /k参数会让命令执行完后一直保留cmd窗口,不需要的话换成/c即可,执行完自动关闭窗口 - 用
subprocess.run传列表参数的方式比手动拼字符串更稳妥,不会出现参数带特殊字符导致命令执行异常的问题 - 运行前确认adb已经加入系统环境变量,或者把
adb.exe换成adb程序的完整绝对路径,同时确保安卓设备已经开启USB调试、通过adb devices能正常识别到。
内容的提问来源于stack exchange,提问作者mcjaccer
相关产品推荐
相关产品推荐

