uiautomator2 实现找图点击
概述
最近看到某音、快手刷广会检测无障碍模式了,所以想尝试其他方法,打算使用Esp32 C3通过蓝牙的方式操作或使用USB操作看看效果。慢慢来,现在使用uiautomator2操作,因为是初学,可能写得不好请见谅。
实现代码
import uiautomator2 as u2
import cv2
import numpy as np
"""
device: abd设备
img: 原始图
template:模版图
threshold:模糊指数
is_click:是否点击(默认为true)
"""
def find_img_OnScreen(device, img, template, threshold,is_click=True):
img_rgb = cv2.imread(img)
template = cv2.imread(template)
target_gray = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRAY)
template_gray = cv2.cvtColor(template, cv2.COLOR_BGR2GRAY)
result = cv2.matchTemplate(target_gray, template_gray, cv2.TM_CCOEFF_NORMED)
loc = np.where(result >= threshold)
screen_width, screen_height = device.window_size()
template_height, template_width = template_gray.shape[:2]
for pt in zip(*loc[::-1]):
if not is_click:
return True
# 计算模板的中心点
center_x = pt[0] + template_width // 2
center_y = pt[1] + template_height // 2
# 添加随机性,选择中心点附近的随机位置
random_offset_x = random.randint(-template_width // 4, template_width // 4)
random_offset_y = random.randint(-template_height // 4, template_height // 4)
click_x = center_x + random_offset_x
click_y = center_y + random_offset_y
# 确保点击位置在屏幕范围内
click_x = max(0, min(screen_width, click_x))
click_y = max(0, min(screen_height, click_y))
# 转换为相对于屏幕的比例坐标
click_x_ratio = click_x / screen_width
click_y_ratio = click_y / screen_height
print(f"Clicking at ({click_x_ratio}, {click_y_ratio})")
device.click(click_x_ratio, click_y_ratio)
return True
return False
完整代码
dy极速版完整代码包含:养号打标签、开大宝箱、20分钟倒计时广告、听书、逛街功能。
算是半成品,仅供学习参考:
http://t.a0e.top/C39LV/B_94UfD3VI