当前位置: 首页 > news >正文

Python GUI自动化定位代码参考

一、pyautogui原始逻辑

import pyautogui

# 获取指定图片在屏幕上的位置
image_path = 'path/to/image.png'
target_position = pyautogui.locateCenterOnScreen(image_path)

if target_position is not None:
    # 获取偏移量
    offset_x = 10
    offset_y = 10

    # 计算实际点击位置
    click_x = target_position.x + offset_x
    click_y = target_position.y + offset_y

    # 点击指定位置
    pyautogui.click(click_x, click_y)
else:
    print("未找到指定图片")

二、CV2测试

需要先安装

pip install opencv-python

import pyautogui
import cv2
import numpy as np

# 读取目标图片
target_image = cv2.imread('path/to/image.png')

# 获取屏幕截图
screenshot = pyautogui.screenshot()
screenshot = cv2.cvtColor(np.array(screenshot), cv2.COLOR_RGB2BGR)

# 在屏幕截图中查找目标图片
result = cv2.matchTemplate(screenshot, target_image, cv2.TM_CCOEFF_NORMED)
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result)
top_left = max_loc

if max_val > 0.9:
    # 获取偏移量
    offset_x = 10
    offset_y = 10

    # 计算实际点击位置
    click_x = top_left[0] + offset_x
    click_y = top_left[1] + offset_y

    # 点击指定位置
    pyautogui.click(click_x, click_y)
else:
    print("未找到指定图片")

三、pillow和pygetwindows

pip install Pillow
pip install pygetwindow

import pyautogui
from PIL import ImageGrab
import pygetwindow as gw

# 获取指定窗口
target_window = gw.getWindowsWithTitle('Window Title')[0]

# 获取窗口位置和大小
window_rect = target_window.rect

# 获取窗口截图
screenshot = ImageGrab.grab(bbox=(window_rect.left, window_rect.top, window_rect.right, window_rect.bottom))

# 读取目标图片
target_image = Image.open('path/to/image.png')

# 在窗口截图中查找目标图片
result = pyautogui.locate(target_image, screenshot, grayscale=True, confidence=0.9)

if result is not None:
    # 获取偏移量
    offset_x = 10
    offset_y = 10

    # 计算实际点击位置
    click_x = window_rect.left + result.left + offset_x
    click_y = window_rect.top + result.top + offset_y

    # 点击指定位置
    pyautogui.click(click_x, click_y)
else:
    print("未找到指定图片")
 

http://www.lryc.cn/news/309005.html

相关文章:

  • 11.网络游戏逆向分析与漏洞攻防-游戏网络架构逆向分析-接管游戏接收网络数据包的操作
  • 特斯拉一面算法原题
  • 【Leetcode每日一题】二分查找 - 山脉数组的峰顶索引(难度⭐⭐)(23)
  • Linux添加用户分组练习
  • 云快充充电桩系统设计书
  • oracle DG 原理
  • MySQL篇—持久化和非持久化统计信息介绍(第一篇,总共三篇)
  • Leetcode—65. 有效数字【困难】
  • 【Java程序设计】【C00322】基于Springboot的高校竞赛管理系统(有论文)
  • 41、网络编程/TCP.UDP通信模型练习20240301
  • Python中操作MySQL和SQL Server数据库的基础与实战【第97篇—MySQL数据库】
  • 【兔子机器人】五连杆运动学解算与VMC(virtual model control)
  • 学习鸿蒙基础(6)
  • 标准PoE交换机、非标准PoE交换机和非PoE交换机三者到底有何区别?
  • 【软件测试】--功能测试4-html介绍
  • 模型优化_XGBOOST学习曲线及改进,泛化误差
  • Java8 - LocalDateTime时间日期类使用详解
  • 3D城市模型可视化:开启智慧都市探索之旅
  • 某查查首页瀑布流headers加密
  • Microsoft Visio 文本框上标或下标
  • Java项目:29 基于SpringBoot+thymeleaf实现的图书管理系统
  • Unity游戏项目中的优化之摄像机视锥体剔除优化
  • 超1000本计算机经典书籍分享(均可免费下载)
  • AI大模型提供商有哪些?
  • 【Linux】部署单机项目(自动化启动)
  • MySQL:使用聚合函数查询
  • 【Linux C | 网络编程】套接字选项、getsockopt、setsockopt详解及C语言例子
  • Springboot解决模块化架构搭建打包错误找不到父工程
  • Android全屏黑边解决方案
  • 【矩阵】【方向】【素数】3044 出现频率最高的素数