【自动化】PyoutuGUI操作键鼠

自动化之PyoutuGUI操作键鼠

文章目录

👉引言💎

学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。
热爱写作,愿意让自己成为更好的人...

...

铭记于心
🎉✨🎉我唯一知道的,便是我一无所知🎉✨🎉

一、初始化环境

bash 复制代码
pip install PyUserInput
pip install pypiwin32
bash 复制代码
from pykeyboard import *
from pymouse import *
import win32api #win32gpi可以控制窗口高亮等
m=PyMouse()
k=PyKeyboard()
x_dim, y_dim = m.screen_size()

二、键盘鼠标事件

m.click(x, y, button, n) -- 点击,想x,y坐标,button:1表示左键,2表示右键,n:默认1次,2双击
m.move(x, y) -- 鼠标移动
m.screen_size() -- 获取屏幕尺寸

bash 复制代码
k.type_string('abcdefg') --输入内容
k.press_key('a') --按a键
k.release_key('a') --松开a键
k.tap_key('a') --点击a键
k.tap_key('a', n=2, interval=5) --点击a键2次,每次间隔5秒
k.tap_key(k.function_keys[5]) --功能键F5
k.press_keys([k.alt_key, 'a']) --组合按键,试验不成功

截屏: 截取并保存屏幕快照:

bash 复制代码
screenshot = pyautogui.screenshot()
screenshot.save('screenshot.png')

识别图片: 找到屏幕上与指定图片匹配的部分,并返回其位置:

bash 复制代码
location = pyautogui.locateOnScreen('example.png')
print(location)

关于异常处理: PyAutoGUI的函数可能会抛出异常,例如找不到屏幕上的匹配项。可以使用try-except块来处理这些异常:

bash 复制代码
try:
    location = pyautogui.locateOnScreen('example.png')
except pyautogui.ImageNotFoundException:
    print("无法找到图像在屏幕上。")

为了防止PyAutoGUI脚本失控,可以启用故障安全功能。当迅速将鼠标移动到屏幕的左上角时,PyAutoGUI函数会抛出一个pyautogui.FailSafeException异常:

pyautogui.FAILSAFE = True

三、消息框功能

  • alert(text='', title='', button='OK')

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

  • `confirm(text='', title='', buttons=['OK', 'Cancel']``

    显示带有确定和取消按钮的消息框。可以自定义按钮的数量和文本。返回单击的按钮的文本

  • `prompt(text='', title='' , default='')``

    显示带有文本输入和确定和取消按钮的消息框。返回输入的文本,如果单击取消,则返回无。

  • password(text='', title='', default='', mask='*')

    显示带有文本输入和确定和取消按钮的消息框。键入的字符显示为*。返回输入的文本,如果单击取消,则返回无。

四、案例实战

自动登录WPS
python 复制代码
import time
from pymouse import PyMouse
from pykeyboard import PyKeyboard

Username = "***"
Password = "***"

def WPS():
    #创建PyMouse和PyKeyboard的实例,分别赋值给变量m和k,使我们可以调用这些对象来模拟鼠标和键盘操作。
    m = PyMouse()
    k = PyKeyboard()
    
    #使用time.sleep函数暂停程序4秒钟,这是为了确保所有的应用程序都已经完全加载,以便进行自动化操作。
    time.sleep(4)
    
    #调用m.click两次,模拟点击屏幕上的特定位置(x=670, y=380),这个位置应该对应于用户名输入框的位置。两次点击之间等待1秒钟。
    m.click(670, 380)
    time.sleep(1)
    m.click(670, 380)  
    # 输入用户名
    k.type_string(Username)
    time.sleep(1)

    m.click(670, 435)
    time.sleep(1) # 输入密码
    k.type_string(Password) #注意这里是无法输入中文的

    m.click(670, 520)  # 点击验证按钮
    time.sleep(3)
    m.click(670, 580)  # 登录

if __name__ == "__main__":
    WPS()

五、问题解决

  • 解决中文输入问题

使用PyAutoGUI时需要注意:

  • 脚本运行时不要移动鼠标或触摸键盘,除非你想要中断它。
  • 测试脚本时,使用低速的操作和故障安全设置,直到你确认它按照预期工作。
相关推荐
qbbmnnnnnn18 分钟前
【WebGis开发 - Cesium】如何确保Cesium场景加载完毕
前端·javascript·vue.js·gis·cesium·webgis·三维可视化开发
哲伦贼稳妥22 分钟前
一天认识一个硬件之电源
运维·其他·电脑·硬件工程
f8979070701 小时前
layui动态表格出现 横竖间隔线
前端·javascript·layui
安红豆.1 小时前
Linux基础入门 --13 DAY(SHELL脚本编程基础)
linux·运维·操作系统
..空空的人1 小时前
linux基础指令的认识
linux·运维·服务器
penny_tcf1 小时前
Linux基础命令halt详解
linux·运维·服务器
二十雨辰2 小时前
[uni-app]小兔鲜-04推荐+分类+详情
前端·javascript·uni-app
万界星空科技2 小时前
界星空科技漆包线行业称重系统
运维·经验分享·科技·5g·能源·制造·业界资讯
荣世蓥2 小时前
10.2 Linux_进程_进程相关函数
linux·运维·服务器
IG工程师2 小时前
关于 S7 - 1200 通过存储卡进行程序更新
经验分享·笔记·自动化