Python使用pyautogui模块实现自动化鼠标和键盘操作示例

本文实例讲述了Python使用pyautogui模块实现自动化鼠标和键盘操作。分享给大家供大家参考,具体如下:

一、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 right
  distance = distance - 5
  pyautogui.dragRel(0,distance,duration=0.2) # move down
  pyautogui.dragRel(-distance,0,duration=0.2) # move left
  distance = distance - 5
  pyautogui.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 Field
  if 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 field
  if 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])

更多关于Python相关内容感兴趣的读者可查看本站专题:《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

(0)

相关推荐

  • Python PyAutoGUI模块控制鼠标和键盘实现自动化任务详解

    本文实例讲述了Python PyAutoGUI模块控制鼠标和键盘实现自动化任务.分享给大家供大家参考,具体如下: PyAutoGUI是用Python写的一个模块,使用它可以控制鼠标和键盘. 利用它可以实现自动化任务,再也不用担心有重复枯燥的任务了. pyautogui模块的功能: 移动鼠标.点击左右键和滚轮 发送虚拟按键 # 安装pyautogui 这个模块支持Windows, Mac OS X 和 Linux. 根据系统不同,你可能需要安装一些依赖. Linux系统(Debian系列): $

  • python中的pyautogui实现鼠标键盘控制功能

    pyautogui是一个可以控制鼠标和键盘的python库,类似的还有pywin32. pyautogui的安装 pip3 install python3-xlib 依赖库 sudo apt-get install scrot 依赖库 pip3 install pyautogui python3下安装pyautogui库 import pyautogui 引入该库 pyautogui的方法保护措施 为了防止pyautogui夺取了鼠标的控制权导致我们无法关掉该程序,它提供了一个保护措施,即把鼠标

  • Python使用pyautogui模块实现自动化鼠标和键盘操作示例

    本文实例讲述了Python使用pyautogui模块实现自动化鼠标和键盘操作.分享给大家供大家参考,具体如下: 一.pyautogui模块简要说明 ## 使用 pyautogui 模块相关函数,可以模拟鼠标及键盘操作, 完整说明文档见: http://pyautogui.readthedocs.org/ # pip install pyautogui # 要注意的是,模拟移动鼠标与击键可能太快,导致其他程序跟不上,并且程序可能失去控制, # 需要掌握如何从问题中恢复,至少要能中止它. # 防止或

  • Python利用PyAutoGUI模块实现控制鼠标键盘

    目录 前言 1.鼠标的相关控制 2.键盘的相关控制 前言 PyAutoGUI是一个简单易用,跨平台的可以模拟键盘鼠标进行自动操作的python库. 使用pip的方式安装pyautogui模块 pip install pyautogui pyautogui在使用的时候有两个比较关键的隐患(程序在启动起来以后很难关闭)需要注意一下.一是鼠标出现在屏幕的最上方会出现报错,二是键盘的自动操作太快,所以需要先设置一下相关的参数. import pyautogui as ui # 导入pyautogui代码

  • Python基于FTP模块实现ftp文件上传操作示例

    本文实例讲述了Python基于FTP模块实现ftp文件上传操作.分享给大家供大家参考,具体如下: #!/usr/bin/python #-*- coding:utf-8 -*- from ftplib import FTP #加载ftp模块 ftp=FTP() #设置变量 ftp.set_debuglevel(2) #打开调试级别2,显示详细信息 ftp.connect("IP","port") #连接的ftp sever和端口 ftp.login("us

  • pyautogui自动化控制鼠标和键盘操作的步骤

    PyAutoGUI是一个纯Python的GUI自动化工具,其目的是可以用程序自动控制鼠标和键盘操作,多平台支持(Windows,OS X,Linux). 安装 pip3 install pyautogui pyautogui鼠标操作样例 import pyautogui # 获取当前屏幕分辨率 screenWidth, screenHeight = pyautogui.size() # 获取当前鼠标位置 currentMouseX, currentMouseY = pyautogui.posit

  • python 利用PyAutoGUI快速构建自动化操作脚本

    一.背景 大家好,我是安果! 我们经常遇到需要进行大量重复操作的时候,比如:网页上填表,对 web 版本 OA 进行操作,自动化测试或者给新系统首次添加数据等 这些操作的特点往往是:数据同构,大多是已经有了的结构化数据:操作比较呆板,都是同一个流程的点击.输入:数据量大,极大消耗操作人精力 那么能不能自动化呢? 二.自动化的方案 如果你在 web 上进行操作, Python 的 Selenium 可以满足要求.如果需要对 GUI 界面进行操作,你恐怕得试验下"按键精灵"能不能满足要求.

  • 使用python的pexpect模块,实现远程免密登录的示例

    说明 当我们需要用脚本实现,远程登录或者远程操作的时候,都要去解决如何自动输入密码的问题,一般来说有3种实现方式: 1).配置公钥私钥 2).使用shell下的命令,expect 3).使用python的pexpect模块 下面介绍的代码,是使用python的pexpect模块实现的: 代码 import os import sys import pexpect import datetime #获取昨天的日期 date_yes = (datetime.date.today()-datetime

  • Python安全获取域管理员权限几种方式操作示例

    目录 第1种方式:利用GPP漏洞获取域管理权限 第2种方式:获取服务器明文登录密码 第3种方式:使用MS14-068漏洞进行提权 第4种方式:窃取域管理员令牌 第5种方式:进程迁移 在大多数情况下,攻击者可以通过定位域管理员所登录的服务器,利用漏洞获取服务器system权限,找到域管理的账号.进程或是身份验证令牌,从而获取域管理员权限 第1种方式:利用GPP漏洞获取域管理权限 SYSVOL是域内的共享文件夹,用来存放登录脚本.组策略脚本等信息.当域管理员通过组策略修改密码时,在脚本中引入用户密码

  • Python连接mysql数据库及简单增删改查操作示例代码

    1.安装pymysql 进入cmd,输入 pip install pymysql: 2.数据库建表 在数据库中,建立一个简单的表,如图: 3.简单操作 3.1查询操作 #coding=utf-8 #连接数据库测试 import pymysql #打开数据库 db = pymysql.connect(host="localhost",user="root",password="root",db="test") #使用cursor

  • Python wxpython模块响应鼠标拖动事件操作示例

    本文实例讲述了Python wxpython模块响应鼠标拖动事件操作.分享给大家供大家参考,具体如下: wxpython鼠标拖动事件小案例: #coding:UTF-8 import wx app = wx.App() def dragEVT(event): if event.ButtonDown(): panel1.SetPosition(event.GetPosition()) elif event.Dragging(): panel1.SetPosition(event.GetPositi

  • Python中使用PyHook监听鼠标和键盘事件实例

    PyHook是一个基于Python的"钩子"库,主要用于监听当前电脑上鼠标和键盘的事件.这个库依赖于另一个Python库PyWin32,如同名字所显示的,PyWin32只能运行在Windows平台,所以PyHook也只能运行在Windows平台. 关于PyHook的使用,在它的官方主页上就有一个简单的教程,大体上来说,可以这样使用 # -*- coding: utf-8 -*- # 3import pythoncom 4import pyHook 5def onMouseEvent(e

随机推荐