目录

  • 一:安装
  • 二:鼠标操作:
    • 1:屏幕和鼠标的位置(行X竖Y):
    • 2:获取屏幕和鼠标的位置:
    • 3:鼠标移动和点击:
    • 4: 鼠标移动案例:
    • 5:鼠标拖拽
    • 6: 鼠标滚动
    • 7:保护措施:
    • 8: mouseDown()和mouseUp()函数
  • 三:键盘操作:
    • 1:write函数的使用
    • 2:press函数,keyDown和keyUp函数的使用:
    • 3:hotkey函数的使用:
  • 四:信息框操作:
  • 五:截图和定位操作:
    • 1:screenshot函数的使用:
    • 2:locateOnScreen与locateCenterOnScreen函数的使用:
    • 3:提高定位精度
    • 4:加速定位

一:安装

windows:
pip install pyautogui -i https://pypi.tuna.tsinghua.edu.cn/simple

mac:
pip install pyobjc-core
pip install pyobjc
pip install pyautogui

linux:
#sudo apt-get install scrot python3-tk python3-dev
pip install python3-xlib
pip install pyautogui

二:鼠标操作:

1:屏幕和鼠标的位置(行X竖Y):

  • 左上角的像素位于坐标0、0。如果屏幕的分辨率为1920 x 1080,则右下角的像素将为1919、1079(因为坐标始于0,而不是1)。
  • 屏幕分辨率大小由该size()函数作为两个整数的元组返回。该position()函数返回鼠标光标的当前X和Y坐标。
+---------------------------+
|                           | X increases
|                           |     |
|   1920 x 1080 screen      |     |
|                           |     Y
|                           |
|                           |
+---------------------------+ 1919, 1079

2:获取屏幕和鼠标的位置:

import pyautogui
# 获取屏幕分辨率
print(pyautogui.size())
# 获取鼠标的坐标位置
x, y = pyautogui.position()
print("X: %s Y: %s" % (x, y))


注意: 获取到的是电脑设置中的分辨率。如果是虚拟机也是按照虚拟机的设置,不能根据电脑中的分辨率。

3:鼠标移动和点击:

  • 相对移动:pyautogui.move(65, 168)—相对的是当前鼠标的位置。
  • 绝对移动: pyautogui.moveTo(65, 168)
  • 每个动作后停留时间: pyautogui.PAUSE = 2
  • 判断像素点是不是在屏幕中:pyautogui.onScreen(65, 168)
  • 当前位置点击: pyautogui.click()
  • 先移动到位置再点击: pyautogui.click(x=100, y=200)
  • 移动到某个位置左击,右击,中间点击:pyaotogui.click(x=100, y=200, button=‘right’)
  • 移动到某个位置左击,右击,中间多次点击: pyaotogui.click(x=100, y=200, button=‘right’, clicks=3)
  • 移动到某个位置左击,右击,中间多次点击,中间间隔0.25秒点击:pyaotogui.click(x=100, y=200, button=‘right’, clicks=3, interval=0.25)
  • 左击: pyautogui.leftClick(x, y, 过程中秒数)
  • 右击:pyautogui.rightClick(x, y, 过程中秒数)
  • 双击:pyautogui.doubleClick(x, y, 过程中秒数)

4: 鼠标移动案例:

描述:定位桌面的回收站,然后右击,再用相对路径,左击属性。

# 定位桌面的回收站,然后右击,再用相对路径,左击属性:(57, 285)
import pyautogui# # 每个动作后,停留两秒
# pyautogui.PAUSE = 2# 1: 移动到回收站的位置,2表示移动过程两秒
pyautogui.moveTo(57, 285, 2)
# 2: 右击
pyautogui.rightClick()
# 3:
pyautogui.move(87, 200, 2)
pyautogui.leftClick()

5:鼠标拖拽

案例:将回收站向右拖拽500像素。

import  pyautogui# 1: 鼠标移动到指定位置---绝对(left表示鼠标左键,middle表示中间键, right表示右键)
pyautogui.dragTo(57, 285, button='left')
# 2: 进行拖拽,3表示执行时间---相对
pyautogui.drag(500, 0, 3)

6: 鼠标滚动

案例:定位到代码框,然后滚动

# 案例:定位到代码框,然后滚动
import pyautogui
import time
# 1:定位到代码框:
pyautogui.click(1100, 460,)
# 2: 向下滚动:
pyautogui.scroll(-1000)
time.sleep(1)
# 3: 向上滚动
pyautogui.scroll(1000)

7:保护措施:

为了能够及时中断,PyAutoGUI提供了一个保护措施。当pyautogui.FAILSAFE = True时,如果把鼠标光标在屏幕左上角,PyAutoGUI函数就会产生pyautogui.FailSafeException异常。如果失控了,需要中断PyAutoGUI函数,就把鼠标光标在屏幕左上角。要禁用这个特性,就把FAILSAFE设置成False。

案例:禁用保护

import pyautogui
# 运行过程中,用户动鼠标: 与用户不冲突
pyautogui.FAILSAFE = False
while True:pyautogui.moveTo(400, 400)pyautogui.moveTo(1000, 400)

8: mouseDown()和mouseUp()函数

import pyautogui
import time
# 鼠标定位到我的电脑,进行右击
pyautogui.mouseDown(button="right", x=50, y=54)
pyautogui.mouseUp()
time.sleep(2)
# 鼠标定位到属性,进行左击
pyautogui.mouseDown(button="left", x=86, y=356)
pyautogui.mouseUp()

三:键盘操作:

1:write函数的使用

  • 中文不支持,需要配合pyperclip一起使用。
  • interval 关键字进行延时操作。
    案例:手动打开记事本,定位到记事本,分别写入“hahaha”和“哈哈哈”。
import pyautogui
import pyperclip
# 移动到位置进行点击
pyautogui.moveTo(520, 520, 1)
pyautogui.click()# 书写中文
pyautogui.write("hahaha\n\n", interval=1)# 复制中文,然后粘贴
pyperclip.copy('哈哈哈')
pyautogui.hotkey('ctrl', 'v')

2:press函数,keyDown和keyUp函数的使用:

案例: 使用pass函数,和keydown,keyup,write函数分别完成一次,敲击回车

import pyautogui
import timepyautogui.moveTo(520, 520, 1)
pyautogui.click()# 1: 使用press敲击3次回车
pyautogui.press('enter', presses=3)
pyautogui.write("hahaha\n")
time.sleep(1)# 2:使用keydown 和keyup敲击三次回车
pyautogui.keyDown("enter")
pyautogui.keyUp('enter')
pyautogui.keyDown("enter")
pyautogui.keyUp('enter')
pyautogui.keyDown("enter")
pyautogui.keyUp('enter')
pyautogui.write("hahaha\n")
time.sleep(1)# 3: 使用write敲击三次回车
pyautogui.write(['enter', 'enter', 'enter'])pyautogui.write("hahaha\n")

3:hotkey函数的使用:

案例使用热键:打开任务管理器:

import pyautogui
pyautogui.hotkey('ctrl', 'shift', 'esc')

四:信息框操作:

方法 作用
pyautogui.alert() 简单提示消息框
pyautogui.confirm() 多按钮消息框
pyautogui.prompt() 明文输入消息框
pyautogui.password() 密文输入消息框

案例一:
显示带有文本和单个“确定”按钮的简单消息框。返回单击的按钮的文本。

import pyautoguiel = pyautogui.alert(text='哈喽,我是任善文', title='打招呼', button='OK')
print(el)



案例二:显示带有“确定”和“取消”按钮的消息框。可以自定义按钮的数量和文本。返回单击的按钮的文本。(点击取消)

import pyautoguiel = pyautogui.confirm(text='哈喽,我是任善文', title='打招呼', buttons=['OK', 'Cancel'])
print(el)


案例三:显示带有文本输入以及“确定”和“取消”按钮的消息框。返回输入的文本,如果单击“取消”,则返回“无”。

import pyautoguiel = pyautogui.prompt(text='哈喽,我是任善文', title='打招呼', default='哈喽,我是XXX')
print(el)



案例四:显示带有文本输入以及“确定”和“取消”按钮的消息框。输入的字符显示为*。返回输入的文本,如果单击“取消”,则返回“无”。

import pyautoguiel = pyautogui.password(text='请输入密码', title='密码账号登录', default='12345678', mask='*')
print(el)


五:截图和定位操作:

1:screenshot函数的使用:

案例: 截取回收站图标,保存到文件中。

import pyautogui
img = pyautogui.screenshot('./images/screenshot.png', region=(1, 250, 90, 100))
print(img)

截图如图所示:

返回的是Image对象

2:locateOnScreen与locateCenterOnScreen函数的使用:

案例一:通过刚才截取的图片,找到回收站的位置,然后双击回收站打开。(全屏搜索)

import pyautogui
import time# 1:截取回收站的图片
img = pyautogui.screenshot('./images/screenshot.png', region=(1, 250, 90, 100))
print(img) # 图片类型# 2:全屏搜索图片(回收站)---获取的会是一个区域
rect = pyautogui.locateOnScreen('./images/screenshot.png')
print(type(rect)) # 盒子类型
print(rect[0], rect[1], rect[2], rect[3])# 3:在区域中获取中心位置
point = pyautogui.center(rect)
print(type(point)) # 点类型
x, y = point
print(x, y)time.sleep(1)
# 4: 双击中心位置
pyautogui.doubleClick(x, y)


案例二:使用locateCenterOnScreen,在区域内查询。

import pyautogui
import time# 1:截取回收站的图片
img = pyautogui.screenshot('./images/screenshot.png', region=(1, 250, 90, 100))
print(img)# 2:全屏搜索图片(回收站)---获取的会是一个区域
point = pyautogui.locateCenterOnScreen('./images/screenshot.png')
print(type(point))
x, y = point
time.sleep(1)
# 4: 双击中心位置
pyautogui.doubleClick(x, y)

3:提高定位精度

1: 安装OpenCv,由于文件太大需要指定默认等待下载时间(如果网速好可以不用指定)

pip --default-timeout=20000 install -U opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple
表示下载成功。

2:可选的confidence关键字参数指定函数在屏幕上定位图像的精度。

import pyautogui# 可以通过图片,在屏幕上定位图像所在的位置
# 找到返回的是一个4边距元组 (top, left, width, height),没有找到返回None
# 全屏幕搜素
rect = pyautogui.locateOnScreen('./images/x3.png', confidence=0.6)
print(rect)

4:加速定位

1: 指定搜索区域:

pyautogui.locateOnScreen('./images/computer.png', region=(0, 0, 400, 400))

2: 降低图片颜色的饱和度:

pyautogui.locateOnScreen('./images/computer.png', grayscale=True)

桌面自动化---PyAutoGUI相关推荐

  1. pyautogui桌面自动化基础使用方法

    pyautogui桌面自动化基础使用方法 PyAutoGUI通过接管鼠标.键盘使用权,基本上模拟真人操作,可以解放人重复操作的行为. 1. 获取基础信息 1.1 屏幕信息 获取屏幕尺寸(分辨率×分辨率 ...

  2. 【python之pyautogui桌面自动化】

    本文章来介绍如何通过Python来控制桌面实现自动化操作.桌面自动化操作是通过定位鼠标在桌面的位置,然后根据定位的位置执行对应的操作. 文章目录 GUI控制神器 鼠标操作 鼠标信息 鼠标移动 鼠标点击 ...

  3. 桌面自动化-SuperPatrick工具图像识别点击解析

    话不多说,直接进入正题: 上回简单分析了一下SuperPatrick官网的一个桌面自动化的例子,这次准备简单分析一下关于这个工具桌面图像识别的部分:关于官网给出的讲解也挺详细,里面也有相关代码,本文中 ...

  4. Nodejs爬虫刷csdn访客+桌面自动化框架Robotjs模拟鼠标,键盘,屏幕事件!

    叮铃铃!叮铃铃!老师:"小明 你的梦想是什么?", 沉思了一下 小明:"额额  我想有车有房,自己当老板,媳妇貌美如花,还有一个当官的兄弟" 老师:" ...

  5. 桌面自动化-SuperPatrick工具使用初探

    推荐一个可以用于辅助Selenium自动化的桌面自动化工具-SuperPatrick,经过测试使用过后,效果整体来说还不错,貌似也有一些问题,后文会简单说明一下: 官方网址:http://www.au ...

  6. 桌面自动化winappdriver、uiautomation、win32、pyautogui...

    我的需求是不通过鼠标也能实现点击等操作 就像浏览器脚本一样  可以不用鼠标,可以在自动化脚本运行时我们能做其他的事,但是经过上时间的发掘,我没发现这些库能较好地实现这样的需求 winappdriver ...

  7. python 桌面自动化_桌面自动化:PyAutoGUI

    PyAutoGUI介绍 pyautogui是用来做GUI桌面应用自动化的Python包,功能类似于按键精灵:可以实现控制鼠标.键盘.消息框.截图.定位功能 pyautogui的特点: 纯python实 ...

  8. PyAutoGUI 桌面自动化

    PyAutoGUI 是一个跨平台自动化python模块,以编程的方式控制鼠标键盘. 一.安装 pip install pyautogui 二.前置参数 1.自动 防故障功能 # 默认为True,当鼠标 ...

  9. python实现桌面自动化画图

    前言 分享一个比较有趣的自动化项目,可以帮助实现将准备的图片画在桌面上,是实实在在的画出来. 预览一下效果 这个是在百度上找的图片 将图片进行二值化处理后的效果 通过画图工具画出来的效果. 核心代码 ...

最新文章

  1. python空类型-在Python中__________表示空类型。
  2. python学习中的bug
  3. kaggle 训练自己的cycleGan
  4. djl和ljl_使用Spring Boot和DJL进行深度学习
  5. LeetCode 823. 带因子的二叉树(动态规划)
  6. 日语学习-多邻国-人
  7. lisp型材库_STMX
  8. Notes Twenty one days-渗透攻击-红队-权限提升
  9. win2003修改密码后提示确认用户名及域无误_周知!贵州高考志愿填报系统提示!...
  10. 技嘉b365m小雕驱动工具_【黑苹果】技嘉B365M小雕+i5 9400F+RX590EFI分享
  11. 前端非框架类知识点汇总
  12. 为什么iPhone 12 中国版不支持5G毫米波?
  13. 华为手机安装Goole play教程及安装包
  14. 【Mybatis】SpringBoot 自定义TypeHandler 完整步骤
  15. GIS 术语和缩略语
  16. mysql备份报错1356,解决mysqldump备份报错: Couldn't execute 'SHOW FIELDS FROM Unknown error 1356...
  17. 8个字符即可令Skype崩溃而且再也打不开
  18. 网银新一代液晶按键USBkey安全分析
  19. 牛客网数量关系8道、判断推理8道、智力题8道
  20. 桌面开始和快捷方式消失了

热门文章

  1. mediawiki皮肤_如何为MediaWiki设置移动皮肤
  2. 2020年Android开发者常见面试题(一),android视频开发的面试问题
  3. nginx 重定向地址
  4. river歌曲表达的意思_classicriver 这个英文歌曲的名字是什么意思~?
  5. 读谢丽尔·桑德伯格的《向前一步》
  6. 【回眸】今天本想水一篇博客……
  7. struct结构体你了解多少,希望认真的6个小时,可以换来各位看官你的回眸
  8. MySQL 时区问题
  9. Linux运维工程师如何入门
  10. excel导出设置密码(文件不会损坏,看关键那一步),,