如何通过Python+ADB实现快速滑动后长按终点5秒的触控操作?
实现快速滑动后长按的ADB操作方案
问题原因
你之前用的input touchscreen swipe 540 1000 540 1700 5000命令,最后一个参数是整个滑动动作的总时长,所以会让滑动过程持续5秒,而不是滑动完成后再长按。
解决方案:拆分两步执行
要实现「快速滑动→终点长按5秒」,需要把操作拆成两个独立的ADB命令:
- 快速滑动:设置极短的滑动时长(比如100ms),让滑动瞬间完成
- 终点长按:在滑动终点执行长按操作(起点和终点坐标相同,时长设为5000ms)
Python代码示例
方法1:使用subprocess直接调用ADB命令
import subprocess import time # 定义坐标和参数 x1, y1 = 540, 1000 x2, y2 = 540, 1700 swipe_duration = 100 # 快速滑动的时长(毫秒) hold_duration = 5000 # 长按时长(毫秒) # 第一步:快速滑动 subprocess.run(["adb", "shell", f"input touchscreen swipe {x1} {y1} {x2} {y2} {swipe_duration}"]) # 可选:加极短延迟确保滑动完成(视设备反应调整) time.sleep(0.1) # 第二步:在终点长按 subprocess.run(["adb", "shell", f"input touchscreen swipe {x2} {y2} {x2} {y2} {hold_duration}"])
方法2:使用uiautomator2库(如果已集成)
import uiautomator2 as u2 import time device = u2.connect() # 连接设备 x1, y1 = 540, 1000 x2, y2 = 540, 1700 swipe_duration = 0.1 # 快速滑动时长(秒) hold_duration = 5 # 长按时长(秒) # 快速滑动 device.swipe(x1, y1, x2, y2, swipe_duration) # 等待滑动完成 time.sleep(0.1) # 在终点长按 device.long_click(x2, y2, hold_duration)
关键说明
- 快速滑动的时长建议设为100ms以内,根据设备性能调整,确保滑动动作瞬间完成
- 两步操作之间的短延迟是为了避免设备还没处理完滑动就开始长按,可根据实际情况增减
- 长按操作利用了ADB
swipe命令的特性:当起点和终点坐标相同时,命令会转为长按动作,时长由最后一个参数控制
内容的提问来源于stack exchange,提问作者user1611157
相关产品推荐
相关产品推荐

