Python控制鼠标点击
- 到Python的官网去下载并安装pip,下载地址是:https://pypi.python.org/pypi/pip#downloads
解压再解压,直到看到有setup.py文件了。
cmd到setup.py文件所在的目录,执行:
python setup.py install
在Windows环境变量添加D:\software\work\python3\Scripts - 安装PyUserInput。新打开一个cmd,执行
pip install PyUserInput
- 安装win32api,下载地址:http://sourceforge.net/projects/pywin32/files/pywin32/
注意看准要下载你机子上已安装的Python对应的版本,相关介绍:www.linuxidc.com/Linux/2011-12/48525.htm - 打开IDLE,FILE–>New File,输入:
from pymouse import PyMouse m = PyMouse() m.click(30, 30)#移动并且在xy位置点击
-
m.position()#获取当前坐标的位置
-
m.move(x,y)#鼠标移动到xy位置
-
m.click(x,y)#移动并且在xy位置点击
-
m.click(x,y,1|2)#移动并且在xy位置点击,左右键点击
保存,然后按F5运行,即可见到效果。
-
- windows里设置定时执行:
选择“开始-->所有程序–>附件–>系统工具–>任务计划程序–>操作–>创建任务–>触发器–>新建(这里设定执行时间)–>操作–>新建(这里选择我们的脚本文件)”。按确定即可。
#!/usr/bin/python import time from pymouse import PyMouse m = PyMouse() # na = m.position() # print na count = 1 while (count < 10): m.click(331L,631L) time.sleep(0) m.click(322L,519L) print count, "G" time.sleep(0.1) count = count + 1 else: print "good"
使用的python版本为:3.6.1,使用anaconda配置的python环境
首先安装pyautogui库:
pyautogui库函数的基本介绍
PyAutoGUI使用x,y坐标,屏幕左上角坐标是(0, 0)
图像操作
获取屏幕分辨率
import pyautogui as pag screenWidth, screenHeight = pag.size()
截屏功能
获得某个坐标的像素
如果你不需要截取整个屏幕,还有一个可选的region参数。你可以把截取区域的左上角XY坐标值和宽度、高度传入截取
img = pag.screenshot(region=(0, 0, 300 ,400))
在屏幕上找到按钮所在的坐标。其实很简单,首先对你要点击的按钮截个图,就叫button.png吧。然后使用locateOnScreen函数找到按钮所在的位置
locateOnScreen其实就是简单的颜色对比,如果有一个像素不匹配,它就会返回None。这个函数返回了匹配图形的坐标,找到中间点:
locateAllOnScreen():找到所有匹配的位置坐标。
要检查XY坐标是否在屏幕上,需要用onScreen()函数来检验,如果在屏幕上返回True:
鼠标操作
获取当前鼠标的坐标
currentMouseX, currentMouseY = pag.position()
鼠标点击
pag.click()
使用click()函数发送虚拟鼠标点击,默认情况下在鼠标所在的位置点击左键。函数原型:
pag.click(x=cur_x, y=cur_y, button='left')
x,y是要点击的位置,默认是鼠标当前位置
button是要点击的按键,有三个可选值:‘left’, ‘middle’, ‘right’
每个按键按下和松开两个事件可以分开处理:
pag.mouseDown(x=moveToX, y=moveToY, button='left') pag.mouseUp(x=moveToX, y=moveToY, button='left')
双击
pag.doubleClick()
右击
pag.rightClick()
中击
pag.middleClick()
鼠标移动
鼠标拖拽
注意:duration时间不能太短,拖动太快有些系统会吃不消
多次点击
可以设置clicks参数,还有interval参数可以设置每次单击之间的时间间隔。例如:
滚轮
使用函数scroll(),它只接受一个整数。如果值为正往上滚,值为负往下滚。
pag.scroll(200)
缓动/渐变(Tween / Easing)函数
缓动/渐变函数的作用是让光标的移动更炫。如果你不需要用到的话,你可以忽略这些
缓动/渐变函数可以改变光标移动过程的速度和方向。通常鼠标是匀速直线运动,这就是线性缓动/渐变函数。PyAutoGUI有30种缓动/渐变函数,可以通过pyautogui.ease*?查看。其中,pyautogui.easeInQuad()函数可以用于moveTo(),moveRel(),dragTo()和dragRel()函数,光标移动呈现先慢后快的效果,整个过程的时间还是和原来一样。而pyautogui.easeOutQuad函数的效果相反:光标开始移动很快,然后慢慢减速。pyautogui.easeOutElastic是弹簧效果,首先越过终点,然后再反弹回来。例如:
键盘操作
输入字符串
pag.typewrite('Hello world')
上面的字符串是一次输入,为了唬人可以延迟输入
pag.typewrite('Hello world!', 0.25)
PyAutoGUI键盘表:
字符串 | 代表按键 |
---|---|
‘enter’(或‘return’ 或 ‘\n’) | 回车 |
‘esc’ | ESC键 |
‘shiftleft’, ‘shiftright’ | 左右SHIFT键 |
‘altleft’, ‘altright’ | 左右ALT键 |
‘ctrlleft’, ‘ctrlright’ | 左右CTRL键 |
‘tab’ (‘\t’) | TAB键 |
‘backspace’, ‘delete’ | BACKSPACE 、DELETE键 |
‘pageup’, ‘pagedown’ | PAGE UP 和 PAGE DOWN键 |
‘home’, ‘end’ | HOME 和 END键 |
‘up’, ‘down’, ‘left’,‘right’ | 箭头键 |
‘f1’, ‘f2’, ‘f3’…. | F1…….F12键 |
‘volumemute’, ‘volumedown’,‘volumeup’ | 有些键盘没有 |
‘pause’ | PAUSE键 |
‘capslock’, ‘numlock’,‘scrolllock’ | CAPS LOCK, NUM LOCK, 和 SCROLLLOCK 键 |
‘insert’ | INS或INSERT键 |
‘printscreen’ | PRTSC 或 PRINT SCREEN键 |
‘winleft’, ‘winright’ | Win键 |
‘command’ | Mac OS X command键 |
keyDown():按下某个键 keyUp():松开某个键 press():一次完整的击键,前面两个函数的组合。 hotkey(‘ctrl’,’c’):热键函数
消息弹窗函数
保护措施(Fail-Safes)
Python移动鼠标、点击键盘非常快,有可以导致其他应用出现问题。在这种情况下,程序可能会失控(即使是按照你的意思执行的),那时就需要中断。如果鼠标还在自动操作,就很难在程序窗口关闭它。
为了能够及时中断,PyAutoGUI提供了一个保护措施。当pyautogui.FAILSAFE = True时,如果把鼠标光标在屏幕左上角,PyAutoGUI函数就会产生pyautogui.FailSafeException异常。如果失控了,需要中断PyAutoGUI函数,就把鼠标光标在屏幕左上角。要禁用这个特性,就把FAILSAFE设置成False
pag.FAILSAFE = False
通过把pyautogui.PAUSE设置成float或int时间(秒),可以为所有的PyAutoGUI函数增加延迟。默认延迟时间是0.1秒。在函数循环执行的时候,这样做可以让PyAutoGUI运行的慢一点,非常有用。例如:
#!/usr/bin/python import time import pyautogui as pag # X, Y = pag.position() # print X,Y count = 1 while (count < 10): pag.click(x=331, y=631, button='left') time.sleep(0) pag.click(x=331, y=631, button='left') print (count,"G") time.sleep(0.1) count = count + 1 else: print ("good")
评论