一  pyautogui模块简要说明

## 使用 pyautogui 模块相关函数,可以模拟鼠标及键盘操作, 完整说明文档见: http://pyautogui.readthedocs.org/
# pip install pyautogui
# 要注意的是,模拟移动鼠标与击键可能太快,导致其他程序跟不上,并且程序可能失去控制,
# 需要掌握如何从问题中恢复,至少要能中止它。
# 防止或恢复GUI自动化问题
#   1) 使用pyautogui.PAUSE设置每个PyAutoGUI函数调用在执行动作后暂停的秒数
#   2) pyautogui自动防故障功能:将鼠标移到屏幕的左上角,来抛出failSafeException异常

二  控制鼠标移动与交互

三  屏幕快照与识别比较

四  控制键盘

五  综合例子

具体见以下代码及说明:

## 使用 pyautogui 模块相关函数,可以模拟鼠标及键盘操作, 完整说明文档见: http://pyautogui.readthedocs.org/
# pip install pyautogui
# 要注意的是,模拟移动鼠标与击键可能太快,导致其他程序跟不上,并且程序可能失去控制,
# 需要掌握如何从问题中恢复,至少要能中止它。
# 防止或恢复GUI自动化问题
#   1) 使用pyautogui.PAUSE设置每个PyAutoGUI函数调用在执行动作后暂停的秒数
#   2) pyautogui自动防故障功能:将鼠标移到屏幕的左上角,来抛出failSafeException异常
import pyautogui
pyautogui.PAUSE = 1
pyautogui.FAILSAFE = True           # 启用自动防故障功能
width,height = pyautogui.size()     # 屏幕的宽度和高度
pyautogui.position()                # 鼠标当前位置## 控制鼠标移动
for i in range(10):pyautogui.moveTo(100,100,duration=0.25)      # 移动到 (100,100)pyautogui.moveTo(200,100,duration=0.25)pyautogui.moveTo(200,200,duration=0.25)pyautogui.moveTo(100,200,duration=0.25)for i in range(10):pyautogui.moveRel(100,0,duration=0.25)       # 从当前位置右移100像素pyautogui.moveRel(0,100,duration=0.25)       # 向下pyautogui.moveRel(-100,0,duration=0.25)      # 向左pyautogui.moveRel(0,-100,duration=0.25)      # 向上## 例子:持续获取鼠标位置并更新显示
# 1.获取当前坐标
# 2.在屏幕上打印,并删除之前打印的坐标
# 3.处理异常,并能按键退出
# Displays the mouse cursor's currrent position.
import pyautogui
print('Press Ctrl-C to quit.')
try:while True:# Get and print the mouse coordinates.x,y = pyautogui.position()positionStr = 'X: '+str(x).rjust(4)+' Y:'+str(y).rjust(4)pix = pyautogui.screenshot().getpixel((x,y))   # 获取鼠标所在屏幕点的RGB颜色positionStr += ' RGB:('+str(pix[0]).rjust(3)+','+str(pix[1]).rjust(3)+','+str(pix[2]).rjust(3)+')'print(positionStr,end='')                      # end='' 替换了默认的换行print('\b'*len(positionStr),end='',flush=True) # 连续退格键并刷新,删除之前打印的坐标,就像直接更新坐标效果
except KeyboardInterrupt:                              # 处理 Ctrl-C 按键print('\nDone.')## 控制鼠标交互
# pyautogui.click() 封装了 pyautogui.mouseDown()和pyautogui.mouseUp(), 这两个函数也可以单独使用
# pyautogui.doubleClick() 双击左键, pyautogui.rightClick() 双击右键,pyautogui.middleClick() 双击中键
import pyautogui
pyautogui.click(10,5)                     # 在(10,5)单击鼠标,默认左键
pyautogui.click(100,150,button='left')
pyautogui.click(200,250,button='right')
# pyautogui.dragTo()    按键并拖动鼠标移动,参数为坐标,与moveTo相同
# pyautogui.dragRel()   按键并拖动鼠标移动,参数为距离,与moveRel相同import pyautogui,time
time.sleep(5)
# 这里停顿5秒,用于手工打开windows绘图应用,并选中铅笔或画图工具,让鼠标停留在画图工具的窗口中
# 或使用在线paint (http://sumopaint.com)
pyautogui.click()      # click to put drawing program in focus
distance = 200
while distance > 0 :pyautogui.dragRel(distance,0,duration=0.2)  # move rightdistance = distance - 5pyautogui.dragRel(0,distance,duration=0.2)  # move downpyautogui.dragRel(-distance,0,duration=0.2) # move leftdistance = distance - 5pyautogui.dragRel(0,-distance,duration=0.2) # move up
print('Done')pyautogui.scroll(200)         # 鼠标向上滚动200像素
pyautogui.scroll(-100)        #     负数向下import pyperclip
numbers = ''
for i in range(200):numbers = numbers + str(i) + '\n'
pyperclip.copy(numbers)
print(numbers)
# 这里手动打开一个文本窗口,粘贴
import time,pyautogui
time.sleep(5);pyautogui.scroll(100)## 分析屏幕快照
import pyautogui
im = pyautogui.screenshot()     # 获取屏幕快照
im.getpixel((50,200))           # (130,135,144)
pyautogui.pixelMatchesColor(50,200,(130,135,144))   # True  可用来判断屏幕是否发生变化
pyautogui.pixelMatchesColor(50,200,(255,135,144))   # False
# 图像定位识别
pyautogui.locateOnScreen('submit.png')   # 在屏幕上查找匹配与文件相同的区域--每个区域像素都要相同 左,顶,宽,高
pyautogui.center(pyautogui.locateOnScreen('submit.png'))  # 获取匹配图像中心点坐标
pyautogui.click((678,759))               # 点击该区域核心
list(pyautogui.locateAllOnScreen('submit.png'))   # 匹配到多处,返回区域list## 控制键盘
pyautogui.click(100,100);pyautogui.typewrite('Hello python')
pyautogui.typewrite(['a','b','left','left','X','Y'])  # typewrite可传入击键列表,这里输出XYab,left是左箭头
print(pyautogui.KEYBOARD_KEYS)           # pyautogui接受的所有可能字符串pyautogui.press('enter')                 # 接受按键命令
pyautogui.keyDown('shift');pyautogui.press('4');pyautogui.keyUp('shift')    # 输出 $ 符号的按键
#热键组合
pyautogui.keyDown('ctrl')
pyautogui.keyDown('c')
pyautogui.keyUp('c')
pyautogui.keyUp('ctrl')
# 这四句是组合 ctrl-c,类似这种顺序按下,再反序释放的,可以用hotkey()
pyautogui.hotkey('ctrl','c')                # 同上面四句,组合键
pyautogui.hotkey('ctrl','alt','shift','s')  # Ctrl-Alt-Shift-S 热键组合## 综合例子: 自动填表程序
# http://autbor.com/form
# 将电子表格中的大量数据自动输入到另一个应用的表单界面
# 1.点击表单的第一个文本字段
# 2.遍历表单,再每个输入栏键入信息
# 3.点击submit按钮
# 4.用下一组数据重复这个过程
# Automatically fills in the form.import pyautogui,time
# set these to the correct coordinates for your computer.
nameField = (648,319)
submitButton = (651,817)
submitButtonColor = (75,141,249)
submitAnotherLink = (760,224)formData = [{'name':'Alice','fear':'eavppers','source':'wand','robocop':4,'comments':'Tell us'},{'name':'Bog','fear':'eaves','source':'crystal','robocop':4,'comments':'Big room'},{'name':'Kad','fear':'apple','source':'woold','robocop':1,'comments':'Nice day'},{'name':'Cace','fear':'ppers','source':'ball','robocop':5,'comments':'n/a'}]
pyautogui.PAUSE = 0.5
for person in formData:# Give the user a chance to kill the script.print('>>> 5 SECOND PAUSE TO LET USER PRESS CTRL-C <<<')time.sleep(5)# Wait until the form page has loaded.while not pyautogui.pixelMatchesColor(submitButton[0],submitButton[1],submitButtonColor):time.sleep(0.5)print('Entering %s info...' % (person['name']))pyautogui.click(nameField[0],nameField[1])       # 单击第一个文本字段输入位置# Fill out the Name field.pyautogui.typewrite(person['name']+'\t')         # 输入该域,并按下 tab 键,将焦点转向下一个输入框# Fill out the Greatest Fear(s) field.pyautogui.typewrite(person['fear']+'\t')# 处理下拉框# Fill out the Source of Wizard Powers Fieldif person['source'] == 'wand':pyautogui.typewrite(['down','\t'])elif person['source'] == 'crystal':pyautogui.typewrite(['down','down','\t'])elif person['source'] == 'woold':pyautogui.typewrite(['down','down','down','\t'])elif person['source'] == 'ball':pyautogui.typewrite(['down','down','down','down','\t'])                # 处理单选按钮# Fill out the RoboCop fieldif person['robocop'] == 1:pyautogui.typewrite([' ','\t'])elif person['robocop'] == 2:pyautogui.typewrite(['right','\t'])elif person['robocop'] == 3:pyautogui.typewrite(['right','right','\t'])elif person['robocop'] == 4:pyautogui.typewrite(['right','right','right','\t'])elif person['robocop'] == 5:pyautogui.typewrite(['right','right','right','right','\t'])# Fill out the Additional Comments field.pyautogui.typewrite(person['comments']+'\t')# Click Submit.pyautogui.press('enter')# Wait until form page has loaded.print('Clicked submit.')time.sleep(5)# Click the Submit another response link.pyautogui.click(submitAnotherLink[0],submitAnotherLink[1])

自动化鼠标和键盘操作pyautogui相关推荐

  1. python实现自动按键_Python使用pyautogui模块实现自动化鼠标和键盘操作示例

    本文实例讲述了Python使用pyautogui模块实现自动化鼠标和键盘操作.分享给大家供大家参考,具体如下: 一.pyautogui模块简要说明 ## 使用 pyautogui 模块相关函数,可以模 ...

  2. Python自动化控制鼠标和键盘操作—— PyAutoGUI

    简 介:PyAutoGUI是一个Python语言的键鼠自动化库,简单来说和按键精灵的功能一样.但是因为是Python的类库,所以可以使用Python代码配合一些其他类库完成更加强大的功能,本文对PyA ...

  3. 通过python里面的pyautogui自动化控制鼠标和键盘操作

    PyAutoGUI是一个纯Python的GUI自动化工具,其目的是可以用程序自动控制鼠标和键盘操作,多平台支持(Windows,OS X,Linux). 安装 pip3 install pyautog ...

  4. pyautogui自动化控制鼠标和键盘操作

    pyautogui自动化控制鼠标和键盘操作 安装 pyautogui鼠标操作样例 pyautogui键盘操作样例 按键支持 提示信息 alert option password prompt 截屏 整 ...

  5. python反恐精英基础版_cs客户端自动化控制鼠标和键盘操作,python+pyautogui

    PyAutoGUI是一个纯Python的GUI自动化工具,其目的是可以用程序自动控制鼠标和键盘操作,多平台支持(Windows,OS X,Linux). 安装 pip3 install pyautog ...

  6. PyAutoGUI 自动控制鼠标和键盘操作(三个小案例)

    PyAutoGUI 安装 用pip直接安装,可能错误不断,基本都是版本的问题,我是这样安装的,可以尝试一下,能不能成功 pip install -i https://pypi.doubanio.com ...

  7. 从零开始编写Web自动化测试脚本(六)--鼠标、键盘操作

    第一章 Selenium+WebDriver环境搭建 第二章 Selenium定位方式 第三章 元素常用属性 第四章 自动化中的三种等待 第五章 自动化浏览器设置及句柄.窗口切换操作 第六章 鼠标.键 ...

  8. 控制台模拟鼠标、键盘操作

    控制台模拟鼠标.键盘操作 模拟鼠标.键盘操作,能让命令行顿然强大,想想,制作批处理版屏幕键盘等都不在话下(已制作过,效果很不错).虽然这也跟CUI无关.本教程教会你如何让命令行模拟鼠标.键盘的操作. ...

  9. 怎么检测用户多长时间没有鼠标与键盘操作

    2019独角兽企业重金招聘Python工程师标准>>> 怎么检测用户多长时间没有鼠标与键盘操作 如何检测用户多长时间没有鼠标与键盘操作? 如何检测用户多长时间没有鼠标与键盘操作?   ...

  10. 【AHK】实现无鼠标/纯键盘操作鼠标设置

    鼠标手势用多了,肩部疼痛,而且尝试了一下,发现无鼠标纯键盘操作专注度更高. 以前觉得这玩意很无聊,有鼠标干嘛要在键盘上高鼠标??现在觉得虽然键盘确实就够操控电脑,但是如果有有点鼠标动作的加持,效率会更 ...

最新文章

  1. Python学习小甲鱼视频003
  2. PHP的词法解析器:re2c
  3. python open
  4. java scrollpane源码_JScrollPane用法 Java实例
  5. 虚拟机安装Vmware-tools
  6. 开发工具IDEA的使用
  7. 清除浮动的方法以及优缺点
  8. 服务器的原理,服务器原理
  9. OpenWrt无线AP+STA配置
  10. BiliBili下载助手
  11. Opencv python 直方图处理
  12. IPhone手机无法连接蓝牙
  13. FrameMaker 格式的本地化流程
  14. Java后端技术面试汇总(第一套)
  15. 如何利用店铺爆款带动店铺其他商品,关联销售怎样做?
  16. SequoiaDB巨杉数据库-卸载
  17. 硬盘数据丢失能恢复吗 硬盘数据丢失怎么找回
  18. 行车记录仪总显示SD卡已满?看看是怎么回事
  19. 嵌入式系统设计与应用
  20. JavaScript中的函数中arguments、参数、默认值和表达式以及箭头函数

热门文章

  1. 使用 AndroidSocketClient 库建立 SSL 安全链接
  2. DFB激光器电流温度与波长的关系
  3. Qt窗口模糊和阴影效果
  4. AutoVue中文字体被其他字体替换
  5. eclipse IED 创建springboot项目教程
  6. 响应式原理(Vue2.x)下篇
  7. 360插件化方案RePlugin学习笔记-插件使用宿主中的类
  8. 【C++】初窥门径---入门篇
  9. 服务器销售工资如何计算公式,拿提成的工资怎么算的有公式吗
  10. gromacs ngmx_gromacs初学入门