如何在 Python 中控制鼠标和键盘?
这个想法是与Java中的Robot() 类做同样的事情。可以说:将鼠标从这里移到这里,单击那里,写下屏幕上的任何内容。
对于 Windows,有 win32api,但我主要使用 Linux。
对于 Linux,有 Xlib,但它也适用于键盘吗?(发现只参考鼠标)
有没有跨平台的解决方案?(Linux、Windows 甚至 OS X 都会很棒。)
我使用 dogtail ( https://fedorahosted.org/dogtail/ ) 来做这些事情,使用它我为我的 Linux(Ubuntu) 应用程序创建了一个自动化测试框架。该框架单击按钮并在文本字段中键入内容。
查看 gedit 示例,https: //fedorahosted.org/dogtail/browser/examples/gedit-test-utf8-procedural-api.py
所以只需使用狗尾,例如
dogtail.rawinput.click(100, 100)
这完全有效……至少在 Mac 上。这是用于单击和拖动等。但可以相应地进行改装。
#!/usr/bin/python
import sys
import time
from Quartz.CoreGraphics import * # imports all of the top-level symbols in the module
def mouseEvent(type, posx, posy):
theEvent = CGEventCreateMouseEvent(None, type, (posx,posy), kCGMouseButtonLeft)
CGEventPost(kCGHIDEventTap, theEvent)
def mousemove(posx,posy):
mouseEvent(kCGEventMouseMoved, posx,posy);
def mouseclickdn(posx,posy):
mouseEvent(kCGEventLeftMouseDown, posx,posy);
def mouseclickup(posx,posy):
mouseEvent(kCGEventLeftMouseUp, posx,posy);
def mousedrag(posx,posy):
mouseEvent(kCGEventLeftMouseDragged, posx,posy);
ourEvent = CGEventCreate(None);
currentpos=CGEventGetLocation(ourEvent); # Save current mouse position
mouseclickdn(60, 100);
mousedrag(60, 300);
mouseclickup(60, 300);
time.sleep(1);
mousemove(int(currentpos.x),int(currentpos.y)); # Restore mouse position
对于控制台尝试 ncurses 或俚语。在其他情况下尝试 PyQt、PyGtk、TkInter。
所有这些解决方案都是跨平台的,几乎可以在任何地方工作。
这是来自 Python 论坛的一个有趣的主题: Python 论坛
编辑:关于鼠标控制的stackoverflow上还有一个有趣的问题......也许这是一个很好的起点...... 用Python控制鼠标
答案之一是参考一个 Linux 示例……它引导您访问一个不错的博客条目。
对于 linux,有 Xlib,但它也适用于键盘吗?(发现只参考鼠标)
是的,它也适用于键盘。
linux、windows 和 mac 上的跨平台解决方案是 autopy。 https://github.com/msanders/autopy/
它允许控制鼠标和键盘,截取屏幕截图,并在较大的位图上查找小位图,如果您想自动化一些您无法控制的 gui 应用程序,应该非常方便。