该脚本使用了时间时间,并且精确到了毫秒级别,对时间要求高的推荐使用这个脚本,该脚本需要安ntplib库获取标准北京时间。注意,由于脚本运行判断需要时间且从这里到服务器也有延迟,所以在正式执行该脚本前请进行测试,根据不同的情况往往是需要将目标时间设置为提前或者延迟1秒或几百毫秒的,具体请自己进行测试。
pip install ntplib #安装ntplib库
1.先将手机打开开发者模式,点击允许usb调试,
2.将你要点击的位置先在手机上截屏,然后发给电脑使用画图软件打开获取目标位置的x,y。
3.测试adb是否能正常点击点击,如果没有执行下面命令没报错输出在执行第四步,有报错请自行百度
adb device
确保设备显示在列表中。
adb shell input tap <60> <60>
adb shell 命令来模拟点击坐标 (60, 60)。
4.将一下代码copy去你的文件并执行,记得修改配置里的三个对应参数
import os
import time
from datetime import datetime, timedelta
import ntplib # 用于获取网络时间
# 配置
x, y = 927, 2308 # 设置点击位置 (x, y)
click_times = 10 # 设置点击次数
target_time = "20:33:10.500" # 设置目标时间(小时:分钟:秒.毫秒)
# 获取网络时间
def get_network_time():
try:
client = ntplib.NTPClient()
response = client.request('ntp.aliyun.com') # 从阿里云NTP服务器获取时间(中国标准时间)
return datetime.utcfromtimestamp(response.tx_time) + timedelta(hours=8) # 转换为北京时间
except Exception as e:
print(f"无法获取网络时间,错误: {e}")
return None
# 获取当前时间(从网络)
network_time = get_network_time()
if not network_time:
print("获取网络时间失败,退出程序。")
exit(1)
# 获取目标时间
target_hour, target_minute, target_second, target_millisecond = map(int, target_time.replace('.', ':').split(':'))
target = network_time.replace(hour=target_hour, minute=target_minute, second=target_second, microsecond=target_millisecond * 1000)
# 如果目标时间已经过去,则设置为明天的目标时间
if target < network_time:
target += timedelta(days=1)
# 计算倒计时(毫秒)
wait_time = (target - network_time).total_seconds() * 1000 # 转换为毫秒
# 动态显示倒计时
while wait_time > 0:
now = datetime.now() # 使用程序启动时保存的网络时间进行对比
wait_time = (target - now).total_seconds() * 1000
if wait_time <= 0:
break
print(f"\r距离时间 {target_time} 点击屏幕位置 ({x}, {y}) 开始还有 {int(wait_time)} 毫秒...", end="")
time.sleep(0.001) # 每毫秒更新一次
# 倒计时结束,开始点击
print(f"\n目标时间 {target_time} 到达,开始点击屏幕位置 ({x}, {y})...")
# 模拟点击
for i in range(click_times):
os.system(f"adb shell input tap {x} {y}") # ADB 点击命令
print(f"已点击 {i + 1} 次")
time.sleep(0.2) # 每次点击间隔 0.2 秒
print("点击完成!")









