iis服务器助手广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python自动操作GUI之PyAutoGUI怎么使用
  • 783
分享到

Python自动操作GUI之PyAutoGUI怎么使用

2023-07-02 16:07:39 783人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

本篇内容主要讲解“python自动操作GUI之PyAutoGUI怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python自动操作GUI之PyAutoGUI怎么使用”吧!GUI控制神器我

本篇内容主要讲解“python自动操作GUI之PyAutoGUI怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习Python自动操作GUI之PyAutoGUI怎么使用”吧!

Python自动操作GUI之PyAutoGUI怎么使用

GUI控制神器

我们今天的主人公是 pyautoguipyautogui 是一个纯 Python 的 GUI 自动化工具,通过它可以让程序自动控制鼠标和键盘的一系列操作来达到自动化测试的目的。

模块安装,打开cmd,输入:

pip install pyautogui

成功展示:
Successfully installed PyTweening-1.0.4 mouseinfo-0.1.3 pyautogui-0.9.53 pygetwindow-0.0.9 pymsgbox-1.0.9 pyperclip-1.8.2 pyrect-0.2.0 pyscreeze-0.1.28

安装好后就可以直接使用了。

导包

import pyautogui

鼠标操作

鼠标信息

  • pyautogui.position() 获取鼠标位置

  • pyautogui.onScreen(x,y) 判断坐标(x,y)是否在屏幕内,返回True,Flase
    以右上角为(0,0)点

鼠标移动

桌面操作最基本的就是鼠标操作了,我们可以控制鼠标的移动:

  • pyautogui.moveTo(x,y) 绝对位置移动 ,移动到x,y

  • pyautogui.moveRel(x,y) 相对位置移动 ,从当前位置移动

# 移动鼠标pyautogui.moveTo(200,400,duration=2)pyautogui.moveRel(200,500,duration=2)

整个桌面是以左上角为坐标轴的原点,所有的操作都以这个原点,来确定操作位置。

第一行是将鼠标移动到指定的像素(200,400)位置;
第二行代码是将鼠标按照当前点向右移动200px,向下移动500px这个方向移动。

两行代码中都有一个共同的参数 duration,这个参数表示移动时间,即在指定时间内完成移动操作,单位是

运行这两行代码,观察屏幕鼠标的变化,是不是很神奇?

鼠标点击

通常,我们的鼠标有左右两个按键,高级点的鼠标中间还有个按键。

我的鼠标只有两个按键,中间没有按键,唉~
pyautogui针对这三个按键操作都有相应的处理:

  • pyautogui.click()
    (100,100, clicks=2,interval=0.5,button=‘right’,duration=0.2)
    位置,点击次数,间隔时间,右键(默认左键),移动间隔

  • left:左键 right:右键 middle:中键

# 鼠标点击,默认左键pyautogui.click(100,100)   # 单击左键pyautogui.click(100,100,button='left')  # 单击右键pyautogui.click(100,300,button='right') # 单击中间 pyautogui.click(100,300,button='middle')

鼠标点击,如果不指定 button 参数,默认是点击左键,前面两个参数就是点击坐标的位置。

运行这段代码,看看你的桌面会发生什么?

鼠标除了点击操作,还有双击操作:

  • pyautogui.doubleClick() #双击右键

  • pyautogui.leftClick() #双击左键

  • pyautogui.middleClick() #双击中键

  • pyautogui.tripleClick() #双击屏幕

# 双击左键pyautogui.doubleClick(10,10)  # 双击右键pyautogui.rightClick(10,10)   # 双击中键pyautogui.middleClick(10,10) # 双击屏幕pyautogui.tripleClick(10,10)

操作函数也很简单,相信大家一眼就能看明白,如果一眼看不明白,请多看几眼!

熟悉前端的小伙伴可能会马上联想到,鼠标操作有按下和释放的过程,我们屏幕操作也有对应的控制:

鼠标点击与释放

  • pyautogui.mouseUp() #释放

  • pyautogui.mouseDown() #点击 只需要输入键就可

# 鼠标按下pyautogui.mouseDown()   # 鼠标释放pyautogui.mouseUp()

鼠标拖动

  • pyautogui.dragTo() #绝对位置拖动

  • pyautogui.dragRel() #相对位置拖动
    例:pyautogui.dragRel(-100,200,duration=0.5,button=‘right’)

我们可以控制鼠标拖动到指定坐标位置,并且设置操作时间和按键:

pyautogui.dragTo(100,300,duration=1,button='right')

这个运行效果和前面移动类似。

根据前面移动的经验,我们也有按照方向拖动鼠标:

pyautogui.dragRel(100,300,duration=4,button='left')

鼠标滚动

在桌面操作中,我们有时候需要滚动鼠标到达向上或者向下的位置,这时候我们可以使用 scroll 这个函数来控制:

  • pyautogui.scroll() #(,x,y) 滑动距离(+上 , -下),位置

pyautogui.scroll(30000)

参数是整数,表示向上或向下滚动多少个单位,这个单位根据不同的操作系统可能不一样。如果向上滚动,传入正整数,向下滚动传入负整数。

键盘操作

键盘控制

  • pyautogui.keyDown() #模拟按键放下,内容为按键符

  • pyautogui.keyUp() #模拟按键松开

  • pyautogui.press() #模拟一次按键过程,即keyDown和keyUP的组合

  • pyautogui.hoTKEy() #press一样 区别:可以组合按键

  • pyautogui.typewrite() #模拟键盘输出内容

举个例子,大家平时输入感叹号(!)是怎么操作键盘的?

按住 shift 按键,然后再按住 1 按键,就可以了。用pyautogui控制就是:

pyautogui.keyDown('shift')    pyautogui.press('1')    pyautogui.keyUp('shift')

运行上面的代码,如果你的鼠标是放在编辑框中,你会得到一个感叹号!

我们还可以直接输出内容:

pyautogui.typewrite('python', 1)

第一个参数是输出的内容,第二个参数是间隔时间,单位是秒。

运行上面代码,你的编辑器里面就会每隔1秒钟按顺序输出 python 的6个字母。

特殊符号

有时我们需要输入键盘的一些特殊的符号按键,比如 换行、方向键等,这些有相对应的键盘字符串表示:

pyautogui.typewrite(['p','y','t','h','o','n','enter'])   pyautogui.typewrite(['p','y','t','h','o','n',' '])

运行上面代码,编辑器里面就会输出 python 之后换行。

其他特殊按键对应的字符串请参考官方说明。

快捷键

如果我要复制一个内容,大部分情况下会使用快键键 ctrl + c,按照上面讲的,我们应该这么实现:

pyautogui.keyDown('ctrl')pyautogui.keyDown('c')pyautogui.keyUp('c')pyautogui.keyUp('ctrl')

实现的效果和上面的4行代码相同。

键盘字符串 说明
enter(或return 或 \n) 回车
esc ESC键
shiftleft, shiftright 左右SHIFT键
altleft, altright 左右ALT键
ctrlleft, ctrlright 左右CTRL键
tab (\t) TAB键
backspace, delete BACKSPACE 、DELETE键
pageup, pagedown PAGE UP 和 PAGE DOWN键
home, end HOME 和 END键
up, down, left,right 箭头键
f1, f2, f3…. f12 F1…….F12键
volumemute, volumedown,volumeup 声音变大变小静音(有些键盘没有)
pause PAUSE键,暂停键
capslock CAPS LOCK 键
numlock NUM LOCK 键
scrolllock SCROLLLOCK 键
insert INSERT键
printscreen PRINT SCREEN键
winleft, winright Win键(windows
command command键(Mac OS X )
option option(Mac OS X)

屏幕处理

获取屏幕截屏

我们先来假设一个场景:我现在要在屏幕上找到一个红色的点,你会怎么做?通常的做法是拿到这个红色点的颜色值,然后再对屏幕上的点逐个进行比较,直到找到为止。

pyautogui 为我们这个操作场景提供了支持,分别有三个函数可以完成这三件事情。

  • img = pyautogui.screenshot() #默认是全屏,可是输入截屏大小

  • img.save(‘img.jpg’)

  • pyautogui.screenshot(‘image’,region=(x,y,w,h) # 返回屏幕的截图,是一个Pillow的image对象

  • pyautogui.pixelMatchesColor(500,500,(12,120,400)) # 是一个对比函数,对比的是屏幕上(500,500)这一点像素的颜色,与所给的元素是否相同;

  • pyautogui.locateCenterOnScreen(‘image’, region=(x,y,w,h) ) #图片匹配功能,查找image图片在屏幕中的位置,region限制查找范围

im = pyautogui.screenshot()im.save('screenshot.png')rgb = im.getpixel((100, 500))print(rgb)match = pyautogui.pixelMatchesColor(500,500,(12,120,400))print(match)

第一个是获取屏幕截图函数,它可以返回一个 Pillow 的 image 对象; 第二个是获取屏幕截图中指定坐标点的颜色,返回 rgb 颜色值;第三个是将指定坐标点的颜色和目标的颜色进行比对,返回布尔值。

我们再来升级一下需求:

我现在要在屏幕上找到 edge 浏览器的图标,你会怎么做?

通常的做法是先知道 edge 浏览器的图标长啥样,是绿色还是蓝色,是胖的还是瘦的,对吧?然后再在屏幕上去进行图标的匹配,直到找到一个图标跟我们目标图标一样,就得到了结果。

于是,我们的代码如下:

# 图像识别(一个)oneLocation = pyautogui.locateOnScreen('1.png')print(oneLocation)  # 图像识别(多个)allLocation = pyautogui.locateAllOnScreen('1.png')print(list(allLocation))

你可以在桌面上将某个应用的图标截取下来,保存为图片,然后使用上面几行代码来识别,识别成功,你会返回类似下面的结果:

Box(left=20, top=89, width=33, height=34)[Box(left=20, top=89, width=33, height=34)]

这就是图片在桌面的位置,如果找不到图片,就会返回 None。

信息框

当你在模拟一个桌面操作的时候,如果有分支操作需要根据实际情况来判断,你是不是需要有一个地方可以让你选择走哪个分支?

pyautogui 贴心地考虑到了这种情况,你可以通过弹出一个选择框来中断当前的操作,选择操作分支。

  • pyautogui.alert(text=,title=,button=) #按钮框 文本,标题,按钮名

  • pyautogui.confirm(text=,title=,buttons=) #组合按钮框(多个按钮)

  • pyautogui.prompt(text=,title=,default=) #输入框 #文本,标题,默认文字

  • pyautogui.password(text=,title=,default=,mask=) #密码输入框 #输入框 #文本,标题,默认文字,掩码样式

  • pyautogui.mouseInfo() #获取鼠标的信息

way = pyautogui.confirm('领导,该走哪条路?', buttons=['农村路', '水路', '陆路'])print(way)

这里就是我们 html 页面的 confirm 选择框,选择了选项之后,我们可以获取到选择的选项,然后基于这个选项做判断,进入相应的操作分支。

除了选择确认框之外,还有其他一些提示信息框:

# 警告框alert = pyautogui.alert(text='警告!敌军来袭!', title='警告框')print(alert)# 密码框passWord = pyautogui.password('请输入密码')print(password)# 普通输入框input = pyautogui.prompt('请输入指令:')print(input)

pyautogui 的基本知识就给大家介绍到这里,这个 python 模块的功能十分强大,函数都非常简单,对 python 初学者比较友好。学了这些基本知识之后,你可以运用这些基本知识的组合,去实现一些有趣的桌面自动化操作,快去尝试一把吧!

自动点赞实战

我们通过今天的基础知识的学习,我们可以通过pyautogui+PIL结合来实现网页自动点赞的实战练习。

我们先介绍一个PIL库下一个裁剪图片的函数crop。

使用PIL裁切图片使用PIL需要引用Image,使用Image的open(file)方法可以返回打开的图片,使用crop((x1,y1,x2,y2))方法可以对图片做裁切。
该区域是一个元组,(x1,y1)是图片左上角的坐标,(x2,y2)是图片右下角的坐标。
Python Imaging Library 使用左上角为 (0, 0)的坐标系统。
Python自动操作GUI之PyAutoGUI怎么使用

首先我们要知道点赞的图片的样子

# 截取整个屏幕im=pyautogui.screenshot()# 截取点赞图片om=im.crop((1754,595,1803,631)) #将图片保存供pyautogui.locateOnScreen()使用om.save("dianzan.png")

根据截取的屏幕仅截取带赞的手势图片,可以用pyautogui.mouseInfo()获取图片的位置(1754,595,1803,631)
或者通过pyautogui.location()来确定首尾坐标

在当前目录下得到如下图片。
Python自动操作GUI之PyAutoGUI怎么使用

# 点赞函数def zan(count): #为了防止一直运行下去,点赞次数由自己定义    time.sleep(0.5)    # 寻找刚才保存点赞手势图片    xy = pyautogui.locateOnScreen('dianzan.png')    # 寻找图片的中心    center = pyautogui.center(xy)    # 点赞    pyautogui.click(center)    print('点赞成功')count = 3 # 点赞次数while range(count):    if pyautogui.locateOnScreen('dianzan.png'):        zan(count)   # 调用点赞函数        count-=1    else:    #本页没有图片后,滚动鼠标;        pyautogui.scroll(-500)        print('没有找到目标,屏幕下滚~')        count -= 1print('点赞结束!')

未点赞之前的图片是这样的:
Python自动操作GUI之PyAutoGUI怎么使用

自动点赞之后:
Python自动操作GUI之PyAutoGUI怎么使用
是不是很厉害呢?其实pyautogui还可以做很多东西,比如说自动发信息,其原理还是不变的,找到对应的位置,输入内容,发送就可以了,在这里我就不演示啦!有兴趣的可以去试试哦~~~

完整代码

from PIL import Imageimport pyautoguiimport time# 截取整个屏幕im=pyautogui.screenshot()# 截取点赞图片om=im.crop((1754,595,1803,631)) #将图片保存供pyautogui.locateOnScreen()使用om.save("dianzan.png")# 点赞函数def zan(count): #为了防止一直运行下去,点赞次数由自己定义    time.sleep(0.5)    # 寻找刚才保存点赞手势图片    xy = pyautogui.locateOnScreen('dianzan.png')    # 寻找图片的中心    center = pyautogui.center(xy)    # 点赞    pyautogui.click(center)    print('点赞成功')count = 3 # 点赞次数while range(count):    if pyautogui.locateOnScreen('dianzan.png'):        zan(count)   # 调用点赞函数        count-=1    else:    #本页没有图片后,滚动鼠标;        pyautogui.scroll(-500)        print('没有找到目标,屏幕下滚~')        count -= 1print('点赞结束!'

到此,相信大家对“Python自动操作GUI之PyAutoGUI怎么使用”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: Python自动操作GUI之PyAutoGUI怎么使用

本文链接: https://www.lsjlt.com/news/342839.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python自动操作GUI之PyAutoGUI怎么使用
    本篇内容主要讲解“Python自动操作GUI之PyAutoGUI怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python自动操作GUI之PyAutoGUI怎么使用”吧!GUI控制神器我...
    99+
    2023-07-02
  • Python自动操作GUI神器PyAutoGUI怎么使用
    本篇内容介绍了“Python自动操作GUI神器PyAutoGUI怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!GUI 控制神器我们今...
    99+
    2023-07-06
  • Python自动操作 GUI 神器——PyAutoGUI
    我们以前讲过怎样使用 Python 在浏览器中实现页面自动化操作,不管用哪种方式实现,都是通过定位页面中的元素来进行相应的操作。今天我们来聊一聊如何在桌面实现自动化操作。与浏览器页面自动化操作类似,桌面自动化操作也是需要定位鼠标在桌面的位置...
    99+
    2023-05-14
    Python GUI PyAutoGUI
  • Python自动操作神器PyAutoGUI如何使用
    今天小编给大家分享一下Python自动操作神器PyAutoGUI如何使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。GUI...
    99+
    2023-07-02
  • Python自动操作神器PyAutoGUI的使用教程
    目录GUI 控制神器鼠标操作鼠标移动鼠标点击鼠标拖动鼠标滚动屏幕处理获取屏幕截图键盘输入键盘函数特殊符号快捷键信息框总结我们以前讲过怎样使用 Python 在浏览器中实现页面自动化操...
    99+
    2024-04-02
  • 使用python怎么实现mysql自动增删分区操作
    本篇文章给大家分享的是有关使用python怎么实现mysql自动增删分区操作,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。连接mysql#!/usr/bin/python#-*...
    99+
    2023-06-14
  • Appium自动化(12):Appium常用操作之点击&滑动类操作
    点击&滑动类操作   在进行app自动化的时候,经常会进行点击或滑动的操作,比如点击坐标,左右滑动,上下滑动等,Appium相应提供了解决方案。 坐标的开启步骤: 开发者选项——指针位置开启 坐标展示: 在flick和swipe中都提...
    99+
    2023-09-06
    appium 自动化 android
  • python数据库操作之PyMysql怎么使用
    本文小编为大家详细介绍“python数据库操作之PyMysql怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“python数据库操作之PyMysql怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。P...
    99+
    2023-07-05
  • Python Json读写操作之JsonPath怎么使用
    Python Json读写操作_JsonPath用法详解1. 介绍JSONPath是一种信息抽取类库,是从JSON文档中抽取指定信息的工具,提供多种语言实现版本,包括Javascript、Python、PHP和Java。JSONPath的安...
    99+
    2023-05-14
    Python JSON jsonpath
  • Python 自动化常用操作及glob使用大全
    目录1. OS模块2. shutil模块3. globa模块glob的几种用法本文摘自微信公众号 GitPython:十个 Python 自动化常用操作。如有侵权,联系必删。 1. ...
    99+
    2024-04-02
  • 怎么使用SAP Intelligent Robotic Process Automation自动操作Excel
    怎么使用SAP Intelligent Robotic Process Automation自动操作Excel,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。除了...
    99+
    2023-06-04
  • Python使用xlrd和xlwt实现自动化操作Excel
    目录一、前言介绍二、安装三、xlrd常用操作1、打开Excel2、查看工作簿中所有sheet 3、选择一个工作表4、获取表格的行数、列数5、获取整行和整列的值6、通过循环读...
    99+
    2024-04-02
  • Python学习之使用Python操作R
    最近在写一个检查一台服务器上所有游戏区服配置文件中redis某个key值大小的脚本,本打算使用shell+awk+sed的方式去解决这个问题,但是由于redis的配置信息是php数组形式.shell脚本一时没有写出来,就请教他人帮忙写了个p...
    99+
    2023-01-31
    操作 Python
  • 怎么在python中利用Appium自动化操作微信
    本篇文章为大家展示了怎么在python中利用Appium自动化操作微信,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。python有哪些常用库python常用的库:1.requesuts;2.scra...
    99+
    2023-06-14
  • 使用Python怎么操作Excel实现自动分组合并单元格
    这篇文章主要介绍了使用Python怎么操作Excel实现自动分组合并单元格,编程网小编觉得不错,现在分享给大家,也给大家做个参考,一起跟随编程网小编来看看吧!df.to_excel('test.xlsx',index=Fal...
    99+
    2023-06-06
  • 怎么使用Python构建GUI
    本篇内容介绍了“怎么使用Python构建GUI”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Streamlit我喜欢使用的包是 Stream...
    99+
    2023-07-06
  • python教程之利用pyautogui图形自动化击败重复性办公任务
    目录引言安装鼠标操作键盘操作高级操作教学代码总结引言 pyautogui一个神奇的图像自动化库,学会之后无所不能。上能挂机刷宝箱,下能自动写文档。(>人<;)让我装个逼,别锤我,谢谢...
    99+
    2024-04-02
  • 使用Python自动化Microsoft Excel和Word的操作方法
    将Excel与Word集成,无缝生成自动报告 毫无疑问,微软的Excel和Word是公司和非公司领域使用最广泛的两款软件。它们实际上是“工作”的同义词。通常情况下,每一周我们都会将两...
    99+
    2024-04-02
  • 怎样用Python实现自动化操作Android手机
    本篇文章给大家分享的是有关怎样用Python实现自动化操作Android手机,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、【必须】安装adb工具adb全称Android D...
    99+
    2023-06-02
  • Python之如何使用pandas操作Excel表
    目录 1、前言 2、读取Excel 3、对Excel进行操作 3.1、获取行号、列名  3.2、获取单元格的值,并循环输出  3.3、对空值进行处理,替换  3.4、增加一列,并对新增列的第一行进行赋值 3.5、将修改后数据保存到原文档  ...
    99+
    2023-09-02
    pandas python 开发语言
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作