找回密码
 会员注册
查看: 31|回复: 0

Python--界面UI控制,模拟键鼠操作的模块pyautogui(超详细用法)

[复制链接]

4

主题

0

回帖

13

积分

新手上路

积分
13
发表于 2024-9-4 14:50:30 | 显示全部楼层 |阅读模式
一、简介PyAutoGUI是一个Python第三方库,需要pipinstall安装 。它允许我们通过编程方式模拟鼠标和键盘的操作,窗口操作,以及界面的截图匹配。由于它是照搬人的操作,底层没有套牢在Windows系统,所以它可以跨平台。二、安装通过pip命令可以轻松安装PyAutoGUIpipinstallpyautogui-ihttps://pypi.tuna.tsinghua.edu.cn/simple三、主要功能鼠标操作:PyAutoGUI可以模拟鼠标移动、点击、拖拽等操作,可以控制鼠标的位置和点击的坐标。键盘操作:PyAutoGUI可以模拟键盘按键和组合键的操作,如按下和释放按键、输入文本等。屏幕操作:PyAutoGUI集成了pyscreeze模块,可以直接调用函数截屏、查找指定图像的位置等延时控制:PyAutoGUI可以控制鼠标和键盘操作的延时,以确保操作的正确性和稳定性。窗口控制:PyautoGUI集成了pygetwindow模块,可以直接调用函数获取窗口信息、控制窗口大小、移动、关闭等3.1、基础功能获取鼠标当前位置importpyautoguiprint(pyautogui.position())#Point(x=1964,y=1338)获取屏幕大小 importpyautoguiprint(pyautogui.size())#Size(width=3840,height=2160)判断坐标是否在屏幕中importpyautoguiprint(pyautogui.onScreen(200,200))print(pyautogui.onScreen(2000,4000))3.2、GUI控制功能自动防故障功能默认这项功能为True,意味着:当鼠标的指针在屏幕的最坐上方,程序会报错;目的是为了防止程序无法停止;importpyautoguiprint(pyautogui.FAILSAFE)pyautogui.FAILSAFE=Falseprint(pyautogui.FAILSAFE)停顿功能这个停顿只是在用pyautogui控制鼠标和键盘时生效,如果是执行一般功能的命令,则该停顿不生效importpyautoguipyautogui.PAUSE=5pyautogui.moveTo(200,200,duration=1);pyautogui.moveTo(2000,1000,duration=1)3.3、鼠标控制功能 控制移动鼠标        移动到指定位置importpyautoguipyautogui.moveTo(100,300,duration=1) #(100,300)是坐标,duration的作用是设置移动时间,单位秒,所有的gui函数都有这个参数,而且都是可选参数相对移动,按方向移动     相对移动,按方向移动importpyautoguipyautogui.moveRel(100,500,duration=4) #第一个参数是左右移动像素值,第二个是上下移动像素值控制鼠标点击        单击鼠标importpyautoguipyautogui.click(10,10) #鼠标点击指定位置,默认左键pyautogui.click(10,10,button='left') #单击左键pyautogui.click(1000,300,button='right') #单击右键pyautogui.click(1000,300,button='middle') #单击中间    双击鼠标importpyautoguipyautogui.doubleClick(10,10) #指定位置,双击左键pyautogui.rightClick(10,10) #指定位置,双击右键pyautogui.middleClick(10,10) #指定位置,双击中键        按下和释放分解:点击&释放importpyautoguipyautogui.mouseDown()pyautogui.mouseUp()#两句命令相当于pyautogui.press()pyautogui.mouseDown(button='right')#按下右键pyautogui.mouseUp(button='right',x=100,y=200)#移动到(100,200),释放右键控制鼠标拖动        拖动到指定位置importpyautoguipyautogui.dragTo(100,300,duration=1) #将鼠标拖动到指定的坐标        拖动到相对位置,按方向拖动importpyautoguipyautogui.dragRel(100,500,duration=4) #第一个参数是左右移动像素值,第二个是上下移动像素值,向右拖动100px,向下拖动500px,这个过程持续4秒钟控制鼠标滚动        控制鼠标滚动的函数是scroll(),传入一个整数的参数,说明向上或向下滚动多少个单位;单位根据操作系统不同而不同importpyautoguipyautogui.scroll(300) #scrollup300"clicks"pyautogui.scroll(10)#scrollup10"clicks"pyautogui.scroll(10,x=100,y=100)#movemousecursorto100,200,thenscrollup10"clicks"补间/缓动函数(importPytweening)        指示鼠标移动到目标位置时的进度,可以使鼠标移动变得更漂亮3.4、键盘控制功能按键importpyautoguipyautogui.press('enter') #按enter键,并释放pyautogui.press('f1')pyautogui.press(['left','left','left'])pyautogui.press('left',presses=3) #可以设置按键次数组合按键,按下&释放例如:要在按住Shift键的同时按向左箭头键importpyautoguipyautogui.keyDown('shift') #按下shift键pyautogui.press('left') #按左键,并释放pyautogui.keyUp('shift') #释放shift键输入字符串importpyautoguipyautogui.write('Helloworld!',interval=0.25)#interval每个字符输入间隔时间hold()上下文管理器importpyautoguiwithpyautogui.hold('shift'):pyautogui.press(['left','left','left'])热键hotkey()函数hotkey()可以传递多个按键字符串,这些按键字符串将按顺序按下,然后按相反的顺序释放。importpyautoguipyautogui.hotkey('ctrl', 'shift', 'esc)#相当于以下代码#pyautogui.keyDown('ctrl')#pyautogui.keyDown('shift')#pyautogui.keyDown('esc')#pyautogui.keyUp('esc')#pyautogui.keyUp('shift')#pyautogui.keyUp('ctrl')3.5、消息框功能警报框importpyautoguipyautogui.alert(text='Thisisanalertbox',title='Test',button='OK') #显示一个简单的消息框,其中包含文本和一个“确定”按钮。返回button键的值。确认框/选择框importpyautoguipyautogui.confirm('选择一项',buttons=['A','B','C'])pyautogui.confirm(text='', title='', buttons=['OK', 'N'])#显示一个选择框,有多个按键,返回按键的值提示输入框importpyautoguipyautogui.prompt(text='', title='' , default='')#显示带有文本输入的消息框以及“确定”和“取消”按钮。返回输入的文本,如果单击“取消”,则返回None密码输入框importpyautoguipyautogui.password(text='',title='',default='',mask='*’)#显示带有文本输入的消息框以及“确定”和“取消”按钮。键入的字符显示为*。返回输入的文本,如果单击“取消”,则返回None3.6桌面截图,图片匹配,像素点RGB信息源码,从源码中可看到,引用了PyScreeze模块、Pillow模块,这两个模块会在安装pyautogui模块时一起安装。引用的方法是红色框住的这些截图功能importpyautoguipyautogui.screenshot("C:\\Users\\XX\\test.png") #全屏截图,传递一个文件名字符串会将截图保存到一个文件中,并将其作为一个Image对象返回。pyautogui.screenshot("C:\\Users\\XX\\test.png",region=(0,0,300,400))   #非全屏截图,可选的region关键字参数。可以传递一个包含要捕获区域的左、顶、宽、高的四个整数元组图片匹配importpyautoguipyautogui.locateAll(needleImage,haystackImage,grayscale=None,region=None)##返回一个生成器,用tuple转换一下生成器,得到一个元组,元组中的每个元素是BOX类的实例对象,未匹配到则返回空元组pyautogui.locate(needleImage,haystackImage)#返回值就是上图的b[0],即BOX类的一个实例对象,如果未匹配则报异常pyautogui.locateAllOnScreen(needleImage,minSearchTime)#与locateAll()相比第二个参数变成了minSearchTime,可以理解最小匹配时间,会在这个时间中一直从当前界面找needleImage图,直至找到返回,返回值与pyautogui.locateAll一样,是返回一个生成器pyautogui.locateOnScreen(needleImage,minSearchTime)#返回值是BOX类的一个实例对象,如果未匹配则报异常pyautogui.locateCenterOnScreen(needleImage)#匹配失败返回异常,匹配成功返回一个Point类的一个实例,实例属性x,y坐标,匹配到的图片中心点pyautogui.locateOnWindow(image,title)#里面使用了pygetwindow模块,匹配title的UI界面中是否包含image,返回值同pyautogui.locateOnScreen像素点RGB信息importpyautoguipyautogui.center((10,10,6,8))#Point(x=13,y=14)#返回一个Point类的一个实例,tuple转换后为一个元组pyautogui.pix(x,y)#返回屏幕像素在x,y处的颜色作为RGB元组,每种颜色表示从0到255。(x,y)像素点的(r,g,b)pyautogui.pixelMatchesColor(x,y,(r,g,b))pyautogui.pixelMatchesColor(200,500,(60,63,65))#返回TrueorFalse,即像素点的颜色匹配是否一致3.7、窗口控制功能PyautoGUI集成了pygetwindow模块,可以直接调用函数获取窗口信息、控制窗口大小、移动、关闭等获得窗口对象        获得当前活动(聚焦)窗口的对象importpyautoguipyautogui.getActiveWindow() #返回当前活动(聚焦)窗口的对象        获得所有可见窗口的窗口对象列表importpyautoguipyautogui.getAllWindows() #返回所有可见窗口的窗口对象列表        获得当前活动(聚焦)窗口的importpyautoguipyautogui.getActiveWindowTitle() #返回当前活动(聚焦)窗口的        获得所有可见窗口的字符串列表importpyautoguipyautogui.getAllTitles() #返回所有可见窗口的字符串列表        获得文本中包含字符'ibox'的窗口对象列表importpyautoguipyautogui.getWindowsWithTitle(“ibox”) #返回文本中包含子字符'ibox'的窗口对象列表。        获得包含坐标点的窗口对象列表importpyautoguipyautogui.getWindowsAt(2000,2000) #返回一个窗口对象列表,这些窗口包含坐标(2000,2000)控制窗口    窗口对象的属性importpyautoguiwin=pyautogui.getWindowsWithTitle('Untitled')[0]#win是title是'Untitled'的窗口对象#窗口对象的属性win.size#(132,100)返回元组,窗口大小win.width#返回int,窗口的宽度win.height#返回int,窗口的高度win.topleft#(10,10)返回元组,窗口最左上角坐标win.bottomright#(200,200)返回元组,窗口最右下角坐标win.top#返回int,窗口上边缘的y坐标值win.left#返回int,窗口左边缘的x坐标值win.isMaximized#返回bool,窗口是否是最大窗口win.isMinimized#返回bool,窗口是否是最小窗口    窗口对象的方法importpyautoguiwin=pyautogui.getWindowsWithTitle('Untitled')[0]#win是title是'Untitled'的窗口对象#窗口对象的方法win.maximize()#窗口最大化win.minimize()#窗口最大化win.restore()#恢复窗口大小win.resize(200,200)#窗口x轴增加200,y轴增加200win.resizeTo(200,200)#窗口变化至x轴宽度200,y轴宽度200win.move(10,10)#窗口相对当前位置x轴移动10,y轴移动10win.moveTo(10,10)#窗口移动至10,y轴移动至10,左上角坐标(10,10)四、应用       自动化测试        可以模拟用户的操作,用于自动化测 试各种软件和系统的功能。        数据采集和处理        可以帮助自动化从网页或应用程序中采集数据,并进行处理和分析。       软件演示和教程录制        可以用于自动化演示软件的功能和操作,录制教程视频等。        游戏辅助工具        可以用来制作游戏辅助工具,自动化完成一些重复性操作。五、官方文档       yautogui        https://pyautogui.readthedocs.io/en/latest/msgbox.html        ygetwindow         https://pygetwindow.readthedocs.io/en/latest/#        illow/PIL         https://pillow.readthedocs.io/en/latest/#         yscreeze         https://github.com/asweigart/pyscreeze
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2024-12-30 03:02 , Processed in 0.977917 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表