Python桌面自动化操作:pyautogui安装与使用全解析

[id_83[id_1238450508]715572]

Python桌面自动化操作:pyautogui安装与使用全解析

我们之前讲过如何使用 Python 在浏览器里实现页面的自动化操作。无论采用哪种方式来实现,都是借助定位页面中的元素,进而进行相应的操作。

今天我们来聊一聊怎样在桌面达成自动化操作。浏览器页面自动化操作是这样的,桌面自动化操作也是如此,都需要先确定鼠标在桌面的位置,接着依据定位的位置去执行相应的操作。

[id_1059680021]

我们的主人公是 pyautogui。它是一个纯 Python 的 GUI 自动化工具。借助它,程序能够自动控制鼠标和键盘的一系列操作。这样就能达到自动化测试的目的。

[id_339062818]

pip3 install pyautogui

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

鼠标操作鼠标移动

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

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

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

第一行是将鼠标移至指定的像素位置,该位置坐标为(200,400)。第二行代码是使鼠标按照当前点向右移动 200px 且向下移动 400px 的方向进行移动。

两行代码都有一个参数叫 duration,这个参数的作用是表示移动时间,也就是要在指定的时间内完成移动操作,其单位是秒。

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

我们还可以获取鼠标位置:

print(pyautogui.position())  

这很容易理解,即获取鼠标在当下屏幕里的坐标位置。运行这行代码后,我们能够得到诸如以下的信息:

[id_611758992]

鼠标点击

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

我的鼠标只有两个按键,中间没有按键,唉~

pyautogui针对这三个按键操作都有相应的处理:

# 鼠标点击,默认左键
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(10,10)  
# 双击右键
pyautogui.rightClick(10,10)   
# 双击中键
pyautogui.middleClick(10,10) 

操作函数较为简单,大家应该一眼就能看明白。倘若一眼看不太明白,那就再多看几眼吧!

熟悉前端的小伙伴或许会立刻联想到,鼠标的操作存在按下以及释放这两个过程,而我们在屏幕上的操作也有着相应的控制:

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

鼠标拖动

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

pyautogui.dragTo(100,300,duration=1)   

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

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

pyautogui.dragRel(100,300,duration=4) 

鼠标滚动

在桌面操作时,有时我们需通过滚动鼠标来抵达向上或向下的位置,此时我们能够运用 scroll 这个函数进行控制。

pyautogui.scroll(30000) 

参数为整数,它表示要向上或向下滚动的单位数量。不同的操作系统中,这个单位可能有所不同。若向上滚动,就传入正整数;若向下滚动,就传入负整数。

屏幕处理获取屏幕截图

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

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

im = pyautogui.screenshot()
[id_1201418979]'screenshot.png')
rgb = im.getpixel((100, 500))
print(rgb)
match 是通过 pyautogui 来判断像素颜色是否匹配的,即 pyautogui.pixelMatchesColor( 这个操作所得到的结果就是 match 。500,500,(12,120,400))
print(match)

第一个是获取屏幕截图的函数,此函数能够返回一个 Pillow 的 image 对象;第二个是获取屏幕截图中特定坐标点的颜色,会返回 rgb 颜色值;第三个是把指定坐标点的颜色与目标颜色进行对比,进而返回布尔值。

我们再来升级一下需求:

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

通常的做法是先知晓 edge 浏览器的图标是什么样子,是绿色还是蓝色,是胖的还是瘦的。接着在屏幕上进行图标匹配,一直找到一个图标与我们的目标图标相同,这样就得到了结果。

于是,我们的代码如下:

# 图像识别(一个)
oneLocation 是通过 pyautogui.locateOnScreen 函数获取到的。'1.png')
print(oneLocation)  

# 图像识别(多个)
allLocation 等于 pyautogui 在屏幕上进行全区域查找所得到的结果。'1.png')
print(list(allLocation))

你能够在桌面之上截取某个应用的图标,将其保存为图片。接着,运用上面的几行代码进行识别。倘若识别成功,你将会得到类似如下的结果。

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

这是图片在桌面所处的位置,要是找不到图片,就会给出 None 作为返回结果。

键盘输入键盘函数

键盘输入有下面几个常用的函数:

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

按住 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'])   

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

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

快捷键

如果我要复制一个内容,在大部分情形下会运用快捷键 ctrl + c。依照上述所说,我们应当如此达成:

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

这样写起来很麻烦,而且需要掌控按键的按下和释放的顺序。

pyautogui 为我们提供了一个快捷的函数:

pyautogui.hotkey('ctrl','c')

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

信息框

当你在模拟桌面操作时,若存在分支操作需根据实际情况判断,那么你是否需要有一个能让你选择走哪个分支的地方呢?

pyautogui 考虑到了这种情况,它很贴心。你能够通过弹出一个选择框来中断当前正在进行的操作,并且可以在这个选择框中选择操作分支。

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

这里是我们 HTML 页面的 confirm 选择框。选择选项后,我们能够获取到所选择的选项。接着,依据这个选项进行判断,从而进入相应的操作分支。

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

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

总结

pyautogui 的基本知识已介绍完毕。这个 python 模块功能强大,其函数简单易懂,对 python 初学者较为友好。学习这些基本知识后,你可运用它们的组合来实现一些有趣的桌面自动化操作,快去尝试吧!

(完)


看完本文有收获?请转发分享给更多人

关注「Python那些事」,做全栈开发工程师

点「在看」的人都变好看了哦

你可能想看:
« 上一篇
下一篇 »

相关推荐

python爬虫教程PDF,Python爬虫书PDF

2026年09月02日

30阅读

外国教程python,python编程教学视频

2026年09月02日

25阅读

python简明教程沈洁元,python详细基础教程

2026年09月02日

21阅读

python库包教程,python 包

2026年09月02日

26阅读

python教程大全集,python教程600集

2026年09月02日

26阅读

python入门教程完整版,python零基础入门全套教程视频

2026年09月02日

22阅读