################################用GUI自动化控制键盘和鼠标###############################
\'\'\'
http://pyautogui.readthedocs.org/介绍pyautogui功能
有好几种方法防止或恢复GUI自动化问题:
1、通过注销关闭程序:Ctrl-Alt-Del
2、暂停和自动防故障装置:
(1)、pyautogui.PAUSE=1.5 每个PyAutoGUI函数调用在执行动作之后,都会等待一秒半
非PyAutoGUI指令不会停顿
(2)、pyautogui有自动防故障功能,将鼠标移到屏幕的左上角,自动防故障功能都将停止程序.
可以设置pyautogui.FAILSAFE=False,禁止这项功能
\'\'\'
################################移动鼠标##############################################
####pyautogui.moveTo()函数将鼠标立即移动到屏幕的指定位置:x,y为坐标,duration指定所需秒数
import pyautogui
for i in range(10):
pyautogui.moveTo(100,100,duration=0.25)
pyautogui.moveTo(200,100,duration=0.25)
pyautogui.moveTo(200,200,duration=0.25)
pyautogui.moveTo(100,200,duration=0.25)
####pyautogui.moveRel()函数相对于当前的位置移动鼠标
import pyautogui
for i in range(10):
pyautogui.moveRel(100,0,duration=0.25)
pyautogui.moveRel(0,100,duration=0.25)
pyautogui.moveRel(-100,0,duration=0.25)
pyautogui.moveRel(0,-100,duration=0.25)
####pyautogui.position()函数确定鼠标当前的位置
pyautogui.position()
################################控制鼠标交互##############################################
###################################点击鼠标###############################################
import pyautogui
pyautogui.click(100,150,button=\'left\') ####在相应位置点击鼠标左键
\'\'\'
pyautogui.click(100,150,button=\'right\') ####将在相应位置点击鼠标右键
pyautogui.mouseDown() ####按下鼠标按键
pyautogui.mouseDown() ####释放鼠标按键
pyautogui.doubleClick() ####执行双击鼠标左键
pyautogui.rightClick() ####执行双击右键
pyautogui.middleClick() ####执行双击中键
\'\'\'
###################################拖放鼠标######################################################
\'\'\'
pyautogui.dragTo()和pyautogui.dragRel()函数:将鼠标拖动到一个新的位置,或相对当前位置的位置
dragTo()和dragRel()的参数与moveTo()和moveRel相同:x坐标/水平移动,y坐标/垂直移动,以及可选的时间间隔
\'\'\'
import pyautogui,time
time.sleep(5)
pyautogui.click()
distance=200
while distance>0:
pyautogui.dragRel(distance,0,duration=0.2)
distance=distance-5
pyautogui.dragRel(0,distance,duration=0.2)
pyautogui.dragRel(-distance,0,duration=0.2)
distance=distance-5
pyautogui.dragRel(0,distance,duration=0.2)
###################################滚动鼠标######################################################
import pyperclip
numbers=\'\'
for i in range(200):
numbers=numbers+str(i)+\'\n\'
pyperclip.copy(numbers)
###得到文本
import time,pyautogui
time.sleep(5);pyautogui.scroll(100)
################################获取屏幕快照#####################################################
import pyautogui
>>> im=pyautogui.screenshot()
>>> im.save(r\'C:\Users\shenlu\Desktop\one.jpg\')
####im中包含一个屏幕快照的Image对象
################################分析屏幕快照##############################################
>>> import pyautogui
>>> im=pyautogui.screenshot()
>>> im.getpixel((50,200))
(255, 255, 255)
>>> pyautogui.pixelMatchesColor(50,200,(255,255,254))
False
>>> pyautogui.pixelMatchesColor(50,200,(255,255,255))
True
################################图像识别##############################################
>>> pyautogui.locateOnScreen(r\'C:\Users\shenlu\Desktop\one.jpg\')
>>> a=pyautogui.locateOnScreen(r\'C:\Users\shenlu\Desktop\one.jpg\')
>>> print a
None
\'\'\'
1、pyautogui.locateOnScreen()未成功识别,返回None;
成功识别,返回首次发现该图像时左边的x,y坐标,宽度和高度
2、如果该图像在屏幕上能够找到多处,locateAllOnScreen()函数返回一个list
3、pyautogui.center()返回该区域中心的x,y坐标
\'\'\'
>>>pyautogui.locateOnScreen(\'submit.png\')
(643,745,70,29)
>>>pyautogui.center((643,745,70,29))
(678,759)
>>>pyautogui.click((678,759))
################################控制键盘##############################################
##############################通过键盘发送一个字符串##################################
\'\'\'
pyautogui.typewrite()函数向计算机发送虚拟按键
\'\'\'
>>> import pyautogui
>>> pyautogui.click(500,500);pyautogui.typewrite(\'Hello world!\')
###################################键名###############################################
import pyautogui
pyautogui.typewrite([\'a\',\'b\',\'left\',\'left\',\'X\',\'Y\']) ####以下的调用表示按a键,b键,左箭头两次,X和Y键
>>> pyautogui.typewrite([\'a\',\'b\',\'left\',\'left\',\'X\',\'Y\'])
XYab>>>
>>> pyautogui.typewrite([\'a\',\'b\',\'left\',\'X\',\'Y\'])
aXYb>>>
\'\'\'
键盘键字符串 含义
\'a\',\'b\',\'A\',\'B\',\'C\',\'1\',\'2\',\'3\' 单个字符的键
\'!\',\'@\',\'#\',等等
\'enter\'(or \'return\' or \'\n\') 回车键
\'esc\' Esc键
......
\'\'\'
###################################按下和释放键盘####################################
#\'\'\'
#pyautogui.keyDown()和pyautogui,keyUp()将向计算机发送虚拟的按键和释放
#\'\'\'
import pyautogui
pyautogui.keyDown(\'shift\');pyautogui.press(\'4\');pyautogui.keyUp(\'shift\')
######################################热键组合#######################################
import pyautogui
pyautogui.hotkey(\'ctrl\',\'c\') ##即Ctrl-C键
\'\'\'
等同于
pyautogui.keyDown(\'ctrl\')
pyautogui.keyDown(\'c\')
pyautogui.keyUp(\'c\')
pyautogui.keyUp(\'ctrl\')
\'\'\'
import pyautogui,time
def commentAfterDelay():
pyautogui.click(500,500)
time.sleep(2)
pyautogui.hotkey(\'shift\',\'3\')
pyautogui.typewrite(\'In IDLE,Alt-3 comments out a line.\')
commentAfterDelay()
######################################现在鼠标在哪里#######################################
####显示鼠标坐标位置,给出这个像素的RGB颜色
import pyautogui
print \'Press Ctrl-C to quit\'
try:
while True:
x,y=pyautogui.position()
positionStr=\'X: \'+str(x).rjust(4)+\' Y: \'+str(y).rjust(4)
pixelColor=pyautogui.screenshot().getpixel((x,y))
positionStr +=\'RGB: (\'+str(pixelColor[0]).rjust(3)
positionStr +=\', \'+str(pixelColor[1]).rjust(3)
positionStr +=\', \'+str(pixelColor[2]).rjust(3) +\')\'
print positionStr,
print \'\b\'*len(positionStr),
except KeyboardInterrupt:
print \'\nDone.\'
###########################每隔10秒移动下鼠标###########################
import pyautogui,time
try:
while True:
time.sleep(10)
pyautogui.moveRel(-100,100,duration=0.25)
except KeyboardInterrupt:
print \'\nDone.\'