Home » Python » Python桌面自动化:mouse库详解与实战

Python桌面自动化:mouse库详解与实战

·

Python在自动化领域占据重要地位,其丰富的第三方库让自动化工作变得简单高效。在桌面自动化领域,mouse库作为一个轻量级的鼠标控制工具,以其简洁的API和精确的控制能力,成为开发者实现桌面自动化的得力助手。

mouse库简介

mouse库专注于鼠标控制,提供了一套简单直观的API来模拟鼠标操作。与功能更全面的PyAutoGUI相比,mouse库的优势在于其专注性和性能表现。它不仅安装体积小,且在鼠标事件处理上反应更快,特别适合需要精确鼠标控制的自动化场景。

主要特点:

  • 专注于鼠标控制,API设计简洁明了
  • 支持精确的鼠标移动和点击操作
  • 提供鼠标事件监听功能
  • 支持组合键操作
  • 跨平台兼容(Windows、Linux、MacOS)

相比PyAutoGUI,mouse库在以下方面表现更优:

  • 响应速度更快,尤其在连续鼠标操作时
  • 内存占用更小,启动更快
  • API设计更简洁,学习成本更低

不过mouse库也存在一些局限:

  • 功能相对单一,仅支持鼠标操作
  • 不支持图像识别
  • 缺少屏幕截图等辅助功能

安装配置

安装mouse库非常简单,只需要使用pip命令:

pip install mouse

安装完成后,我们就可以开始使用mouse库了。首先导入库:

import mouse

基础操作详解

鼠标移动

mouse库提供了多种方式来控制鼠标移动:

# 移动到绝对坐标
mouse.move(x=100, y=200)

# 相对当前位置移动
mouse.move(x=50, y=30, absolute=False)

# 平滑移动到指定位置
def smooth_move(target_x, target_y, duration=0.5):
    start_x, start_y = mouse.get_position()
    steps = 50
    for i in range(steps + 1):
        t = i / steps
        current_x = start_x + (target_x - start_x) * t
        current_y = start_y + (target_y - start_y) * t
        mouse.move(current_x, current_y)
        time.sleep(duration / steps)

# 使用平滑移动
smooth_move(500, 300)

点击操作

mouse库支持各种鼠标点击操作:

# 单击左键
mouse.click()

# 右键点击
mouse.right_click()

# 双击
mouse.double_click()

# 按住左键
mouse.press()

# 释放左键
mouse.release()

# 拖拽操作示例
def drag_and_drop(start_x, start_y, end_x, end_y):
    mouse.move(start_x, start_y)
    mouse.press()
    smooth_move(end_x, end_y)
    mouse.release()

事件监听

mouse库的一大特色是支持鼠标事件监听:

# 记录鼠标点击位置
def on_click(x, y, button, pressed):
    if pressed:
        print(f'鼠标点击位置:({x}, {y})')

# 开始监听鼠标点击
mouse.on_click(on_click)

# 记录鼠标移动轨迹
def on_move(x, y):
    print(f'鼠标移动到:({x}, {y})')

mouse.on_move(on_move)

# 停止所有事件监听
mouse.unhook_all()

实战应用:自动化签到程序

下面我们来实现一个自动化签到程序,展示mouse库的实际应用:

import mouse
import time
import datetime
import logging

# 配置日志
logging.basicConfig(
    level=logging.INFO,
    format='%(asctime)s - %(levelname)s - %(message)s',
    filename='auto_signin.log'
)

class AutoSignIn:
    def __init__(self):
        self.sign_in_coords = {
            'app_icon': (100, 700),
            'sign_button': (500, 300),
            'confirm_button': (550, 400)
        }
    
    def open_app(self):
        try:
            mouse.move(self.sign_in_coords['app_icon'][0], 
                      self.sign_in_coords['app_icon'][1])
            mouse.double_click()
            time.sleep(2)  # 等待应用启动
            logging.info("应用程序启动成功")
            return True
        except Exception as e:
            logging.error(f"启动应用失败:{str(e)}")
            return False

    def sign_in(self):
        try:
            # 移动到签到按钮位置
            mouse.move(self.sign_in_coords['sign_button'][0],
                      self.sign_in_coords['sign_button'][1])
            time.sleep(0.5)
            mouse.click()
            
            # 等待确认按钮出现
            time.sleep(1)
            
            # 点击确认按钮
            mouse.move(self.sign_in_coords['confirm_button'][0],
                      self.sign_in_coords['confirm_button'][1])
            mouse.click()
            
            logging.info("完成签到操作")
            return True
        except Exception as e:
            logging.error(f"签到过程出错:{str(e)}")
            return False

    def run(self):
        if self.open_app():
            if self.sign_in():
                print("签到成功!")
            else:
                print("签到失败,请查看日志")
        else:
            print("无法启动应用程序")

if __name__ == "__main__":
    auto_sign = AutoSignIn()
    auto_sign.run()

这个示例展示了如何使用mouse库实现一个实用的自动化签到程序。程序的主要功能包括:

  1. 自动定位并启动目标应用
  2. 模拟鼠标移动到签到按钮位置
  3. 执行点击操作
  4. 确认签到结果
  5. 记录整个过程的日志

项目结构

对于较大的自动化项目,建议采用以下目录结构:

auto_mouse_project/
├── config/
│   └── settings.py       # 配置文件
├── logs/
│   └── auto_signin.log   # 日志文件
├── src/
│   ├── __init__.py
│   ├── mouse_control.py  # 鼠标控制相关函数
│   └── utils.py         # 工具函数
├── tests/
│   └── test_mouse.py    # 测试文件
├── main.py              # 主程序入口
└── requirements.txt     # 项目依赖

开发注意事项

在使用mouse库进行桌面自动化开发时,需要注意以下几点:

  1. 坐标可靠性:
    • 不同屏幕分辨率可能导致坐标偏移
    • 建议使用相对坐标或百分比定位
    • 重要操作前进行坐标校验
  2. 异常处理:
    • 必须处理可能的异常情况
    • 添加适当的重试机制
    • 记录详细的错误日志
  3. 时间控制:
    • 合理设置操作间隔
    • 考虑系统响应延迟
    • 添加超时机制
  4. 测试验证:
    • 在不同环境下进行测试
    • 确保操作序列的稳定性
    • 建立完整的测试用例

相关资源

关注我,每天分享一个实用的Python自动化工具。