dudumiaomiao

################################用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.\'

分类:

技术点:

相关文章: