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库实现一个实用的自动化签到程序。程序的主要功能包括:
- 自动定位并启动目标应用
- 模拟鼠标移动到签到按钮位置
- 执行点击操作
- 确认签到结果
- 记录整个过程的日志
项目结构
对于较大的自动化项目,建议采用以下目录结构:
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库进行桌面自动化开发时,需要注意以下几点:
- 坐标可靠性:
- 不同屏幕分辨率可能导致坐标偏移
- 建议使用相对坐标或百分比定位
- 重要操作前进行坐标校验
- 异常处理:
- 必须处理可能的异常情况
- 添加适当的重试机制
- 记录详细的错误日志
- 时间控制:
- 合理设置操作间隔
- 考虑系统响应延迟
- 添加超时机制
- 测试验证:
- 在不同环境下进行测试
- 确保操作序列的稳定性
- 建立完整的测试用例
相关资源
- PyPI地址:https://pypi.org/project/mouse/
- GitHub项目:https://github.com/boppreh/mouse
- 官方文档:https://github.com/boppreh/mouse
关注我,每天分享一个实用的Python自动化工具。
