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

python自动化之鼠标移动的更多相关文章

  1. Python自动化学习--鼠标和键盘事件

    from selenium import webdriver from selenium.webdriver import ActionChains import time driver = webd ...

  2. Python+Selenium自动化 模拟鼠标操作

    Python+Selenium自动化 模拟鼠标操作   在webdriver中,鼠标的一些操作如:双击.右击.悬停.拖动等都被封装在ActionChains类中,我们只用在需要使用的时候,导入这个类就 ...

  3. Selenium2+python自动化13-Alert

    不是所有的弹出框都叫alert,在使用alert方法前,先要识别出它到底是不是alert.先认清楚alert长什么样子,下次碰到了,就可以用对应方法解决.alert\confirm\prompt弹出框 ...

  4. 【python自动化第十一篇】

    [python自动化第十一篇:] 课程简介 gevent协程 select/poll/epoll/异步IO/事件驱动 RabbitMQ队列 上节课回顾 进程: 进程的诞生时为了处理多任务,资源的隔离, ...

  5. python自动化工具之pywinauto(一个实例)结合pyuserinput

    以下是pywinauto使用指南.这个窗口句柄可以在Spy++中查看 (Microsoft Spy++(查看窗口句柄) 10.00.30319 官方最新绿色版) python自动化工具之pywinau ...

  6. selenium+python自动化98--文件下载弹窗处理(PyKeyboard)

    前言 在web自动化下载操作时,有时候会弹出下载框,这种下载框不属于web的页面,是没办法去定位的(有些同学一说到点击,脑袋里面就是定位!定位!定位!) 有时候我们并不是非要去定位到这个按钮再去点击, ...

  7. selenium+python自动化79-文件下载(SendKeys)

    前言 文件下载时候会弹出一个下载选项框,这个弹框是定位不到的,有些元素注定定位不到也没关系,就当没有鼠标,我们可以通过键盘的快捷键完成操作. SendKeys库是专业的处理键盘事件的,所以这里需要用S ...

  8. Selenium2+Python自动化学习笔记(第1天)

    参考[http://blog.csdn.net/henni_719/article/details/51096531]大神写的笔记,多谢大神共享. 哈哈,今天又找到一位大神写的Selenium2+Py ...

  9. 安利下PyAUtoGUI这个库,可自动化控制鼠标键盘

    PyAutoGUI 不知道你有没有用过,它是一款用Python自动化控制键盘.鼠标的库.但凡是你不想手动重复操作的工作都可以用这个库来解决. 比如,我想半夜时候定时给发个微信,或者每天自动刷页面等操作 ...

随机推荐

  1. day60

    Bootstrap 一.简介 Bootstrap是美国Twitter公司的设计师Mark Otto和Jacob Thornton合作基于HTML.CSS.JavaScript 开发的简洁.直观.强悍的 ...

  2. 文理分科 BZOJ3894 & happiness BZOJ2127

    分析: 最小割(一开始我没看出来...后来经过提点,大致理解...),不选则割的思想. 我们先这样考虑,将和选理相关的和S相连,与选文相关的和T相连,如果没有第二问,那么建图就是简单的S连cnt,cn ...

  3. 20155233 《网络对抗》 Exp5 MSF基础应用

    主动攻击:ms08_067漏洞攻击 启用msf终端msfconsole然后使用search命令搜索该漏洞对应的模块:search ms08_067 选择输入use exploit/windows/sm ...

  4. 基于代的垃圾回收机制--《CLR via C#》读书笔记

    我们知道,垃圾回收在内存无限大的理想情况下是不需要的,正是因为内存存在的瓶颈,我们才需要垃圾回收.在<垃圾回收算法之引用计数算法>和<垃圾回收算法之引用跟踪算法>两篇文章中,我 ...

  5. 当系统扩展遇到违背OO的里氏原则(LSP)的时候怎么办 ?

    先转一篇写得很好的文章:http://www.cnblogs.com/CodeGuy/archive/2012/03/26/2418803.html ========================= ...

  6. 工具神器推荐 Vox 和 search everything

    工具神器推荐 Vox 和 search everything vox官网: http://www.wox.one/

  7. CS50.3

    1,int()取整函数 2,RPG(role playing game )角色扮演游戏 3,代码写了,要跑,需要compiler (编译器) 4,CLI(command-line interface) ...

  8. 【ORACLE】oracle11g单实例安装

    -- 上传安装包 p13390677_112040_Linux-x86-64_1of7.zip p13390677_112040_Linux-x86-64_2of7.zip -- 解压安装包 unzi ...

  9. 新的旅程:NodeJS - 环境篇

    用ASP.NET MVC好多年了,还记得当初为MVC所倡导的"DRY"理念所感染,为Razor的简单而震撼.随着MVC的成熟反而让我觉得似乎渐渐地走入了微软营造的一种高技术的牢笼. ...

  10. 微信小程序在当前页面设置其他页面的数据

    如果其他页面用到的数据是 globalData, 那么直接在当前页面修改 globalData 数据即可. 如果其他页面用到的数据是 storage, 那么直接在当前页面修改 storage 数据即可 ...