################################用GUI自動化控制鍵盤和鼠標###############################函數
'''ui
http://pyautogui.readthedocs.org/介紹pyautogui功能對象
有好幾種方法防止或恢復GUI自動化問題:ip
一、經過註銷關閉程序:Ctrl-Alt-Del字符串
二、暫停和自動防故障裝置:get
(1)、pyautogui.PAUSE=1.5 每一個PyAutoGUI函數調用在執行動做以後,都會等待一秒半it
非PyAutoGUI指令不會停頓自動化
(2)、pyautogui有自動防故障功能,將鼠標移到屏幕的左上角,自動防故障功能都將中止程序.io
能夠設置pyautogui.FAILSAFE=False,禁止這項功能 import
'''
################################移動鼠標##############################################
####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
'''
一、pyautogui.locateOnScreen()未成功識別,返回None;
成功識別,返回首次發現該圖像時左邊的x,y座標,寬度和高度
二、若是該圖像在屏幕上可以找到多處,locateAllOnScreen()函數返回一個list
三、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.'