AutoGUI随记

一、AutoGUI的安装

1.1AutoGUI的使用环境

AutoGUI使用的环境是Anaconda Navigator里的VS Code软件。

打开VS Code后可以在拓展里安装Python和Chinese拓展包,方便使用。

1.2AutoGUI的安装命令

python -m pip install -U pyautogui

1.3安装常见问题

AutoGUI安装命令需要使用到pip库,通常电脑没有安装,需另外安装。

以下操作建议使用管理员模式进行。

1.3.1查询Python安装情况

win+r打开运行窗口,输入cmd打开命令提示符输入以下命令,检查是否安装Python:

python -version    #查询python版本

Python安装成功后会输出以下内容:

已经安装了但是没输出的时候可以检查路径问题:

右键我的电脑->属性->高级系统设置->环境变量,在系统变量的里面找到path双击进入:

将Python的路径复制后,在上图中新建一个路径添加即可。

1.3.2查询pip版本

win+r打开运行窗口,输入cmd打开命令提示符输入以下命令,检查是否安装pip:

pip -version       #查询pip版本

若提示“‘pip'不是内部或外部命令,也不是可运行的程序或批处理文件”,则输入以下命令进行安装:

py -m ensurepip --upgrade

1.3.3 pip常用函数

python -m pip install --upgrade pip   #pip的更新
 
pip install 安装包名                  #下载指定的python包
 
pip install 包名==版本号              #下载指定版本的python包
 
pip list --outdated                  #查询是否有可以更新的包
 
pip install --upgrade 要更新的包名    #更新指定包
 
pip uninstall 要卸载的包名            #卸载的python包

二、AutoGUI函数及问题

2.1AutoGUI函数

2.1.1常用函数

import pyautogui
pyautogui.size()  # 获取屏幕尺寸(分辨率×分辨率)
pyautogui.position() # 获取鼠标当前位置

pyautogui.PAUSE = 1 
# 调用在执行动作后暂停的秒数,只能在执行一些pyautogui动作后才能使用,建议用time.sleep

pyautogui.FAILSAFE = True 
# 启用自动防故障功能,左上角的坐标为(0,0)
#将鼠标移到屏幕的左上角,来抛出failSafeException异常

2.1.2鼠标函数

1.鼠标移动

pyautogui.moveTo(sizex/2,sizey/2,duration=1)
# 绝对位置移动,移动至屏幕正中心,鼠标移动过渡时间duration设为1秒

pyautogui.moveRel(100, -200, duration=0.5)
# 相对位置移动,向右100、向上200,鼠标移动过渡时间duration设为0.5秒

2.鼠标点击

pyautogui.click(sizex/2,sizey/2, duration=0.5)
# 移动至屏幕中心点击一下左键,过渡时间0.5秒

pyautogui.click(100,100, clicks=3,interval=0.1,duration=0.5)
# 移动至(100,100)点击3次左键,点击间隔0.1s,鼠标移动过渡时间0.5秒

pyautogui.click(100,100, clicks=2,interval=0.5,button='right',duration=0.2)
# 移动至(100,100)点击2次右键,点击间隔0.5s,鼠标移动过渡时间0.2秒

#pyautogui.click(x=moveToX, y=moveToY, clicks=num_of_clicks, interval=secs_between_clicks, button='left')
# 其中,button属性可以设置成left,middle和right。
pyautogui.click(10, 20, 2, 0.25, button='left')

pyautogui.click() # 鼠标当前位置点击一下
pyautogui.doubleClick() # 鼠标当前位置左击两下
pyautogui.tripleClick() # 鼠标当前位置左击三下
pyautogui.click(x=100, y=200, duration=2) # 先移动到(100, 200)再单击
pyautogui.doubleClick(x=100, y=150, button="left") # 鼠标在(100,150)位置左击两下

pyautogui.mouseDown() # 鼠标左键按下
pyautogui.mouseDown(button='right') # 按下鼠标右键

pyautogui.mouseUp() # 鼠标左键松开
pyautogui.mouseUp(button='right', x=100, y=200) # 移动到(100, 200)位置,然后松开鼠标右键

3.滚轮滚动

# scroll函数控制鼠标滚轮的滚动,amount_to_scroll参数表示滚动的格数。
#正数则页面向上滚动,负数则向下滚动,经测试50为一个滚动单位。
pyautogui.scroll(clicks=amount_to_scroll, x=moveToX, y=moveToY)

pyautogui.scroll(50) # 向上滚动1格
pyautogui.scroll(-50) # 向下滚动1格
pyautogui.scroll(10, x=100, y=100) # 移动到(100, 100)位置再向上滚动10格

4.鼠标拖拽

# 将鼠标从当前位置拖至屏幕中心,默认左键
pyautogui.dragTo(sizex/2,sizey/2)

# 将鼠标从当前位置向左100像素、向右200像素拖动,过渡时间0.5秒,指定右键
pyautogui.dragRel(-100,200,duration=0.5,button='right')

2.1.3键盘函数

  1. 输入字符

pyautogui.typewrite('Hello world!') # 输入Hello world!字符串
pyautogui.typewrite('Hello world!', interval=0.25) # 每次输入间隔0.25秒,输入Hello world!
  1. 输入按键动作

pyautogui.press('enter') # 按下并松开(轻敲)回车键
pyautogui.press(['left', 'left', 'left', 'left']) # 按下并松开(轻敲)四下左方向键
pyautogui.keyDown('shift') # 按下`shift`键
pyautogui.keyUp('shift') # 松开`shift`键

pyautogui.keyDown('shift')
pyautogui.press('4')
pyautogui.keyUp('shift') # 输出 $ 符号的按键

pyautogui.hotkey('ctrl', 'v') # 组合按键(Ctrl+V),粘贴功能,按下并松开'ctrl'和'v'按键
  1. 键盘对应符号

pyautogui.KEYBOARD_KEYS = ['\t', '\n', '\r', ' ', '!', '"', '#', '$', '%',
 '&', "'", '(', ')', '*', '+', ',', '-', '.','/', '0', '1', '2', '3', '4', 
'5', '6', '7', '8', '9', ':', ';', '<', '=', '>', '?', '@','[', '\\', ']',
 '^', '_', '`', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l',
'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '{', 
'|', '}', '~','accept', 'add', 'alt', 'altleft', 'altright', 'apps',
'backspace', 'browserback','browserfavorites', 'browserforward', 'browserhome', 
'browserrefresh', 'browsersearch','browserstop', 'capslock', 'clear', 
'convert', 'ctrl', 'ctrlleft', 'ctrlright', 'decimal','del', 'delete', 
'divide', 'down', 'end', 'enter', 'esc', 'escape', 'execute', 'f1', 'f10',
'f11', 'f12', 'f13', 'f14', 'f15', 'f16', 'f17', 'f18', 'f19', 'f2', 'f20', 
'f21', 'f22','f23', 'f24', 'f3', 'f4', 'f5', 'f6', 'f7', 'f8', 'f9', 'final', 
'fn', 'hanguel', 'hangul','hanja', 'help', 'home', 'insert', 'junja', 'kana', 
'kanji', 'launchapp1', 'launchapp2','launchmail', 'launchmediaselect', 'left',
'modechange', 'multiply', 'nexttrack','nonconvert', 'num0', 'num1', 'num2', 
'num3', 'num4', 'num5', 'num6', 'num7', 'num8', 'num9','numlock', 'pagedown', 
'pageup', 'pause', 'pgdn', 'pgup', 'playpause', 'prevtrack', 'print',
'printscreen', 'prntscrn', 'prtsc', 'prtscr', 'return', 'right', 'scrolllock',
'select','separator', 'shift', 'shiftleft', 'shiftright', 'sleep', 'space', 
'stop','subtract', 'tab','up', 'volumedown', 'volumemute', 'volumeup', 'win', 
'winleft', 'winright', 'yen', 'command','option', 'optionleft', 'optionright']

2.1.4弹窗函数

# 显示一个简单的带文字和OK按钮的消息弹窗。用户点击后返回button的文字。
pyautogui.alert(text='', title='', button='OK')

# 显示一个简单的带文字、OK和Cancel按钮的消息弹窗,用户点击后返回被点击button的文字,支持自定义数字、文字的列表。
pyautogui.confirm(text='', title='', buttons=['OK', 'Cancel']) # OK和Cancel按钮的消息弹窗

# 可以输入的消息弹窗,带OK和Cancel按钮。用户点击OK按钮返回输入的文字,点击Cancel按钮返回None。
pyautogui.prompt(text='', title='', default='')
 
# 样式同prompt(),用于输入密码,消息用*表示。带OK和Cancel按钮。用户点击OK按钮返回输入的文字,点击Cancel按钮返回None。
pyautogui.password(text='', title='', default='', mask='*')

2.1.5截图函数

pyautogui.screenshot('a') 
# 截全屏并设置保存图片的位置和名称

pyautogui.screenshot('a', region=(0, 0, 300, 400))
# 不截全屏,截取区域图片。截取区域region参数为:左上角XY坐标值、宽度和高度

pix = pyautogui.pixel(220, 200) # 获取坐标(220,200)所在屏幕点的RGB颜色

# 如果你只是要检验一下指定位置的像素值,可以用pixelMatchesColor(x,y,RGB)函数,把X、Y和RGB元组值穿入即可
# 如果所在屏幕中(x,y)点的实际RGB三色与函数中的RGB一样就会返回True,否则返回False
pyautogui.pixelMatchesColor(100, 200, (255, 255, 255))
pyautogui.pixelMatchesColor(100, 200, (255, 255, 245), tolerance=10)
# tolerance参数可以指定红、绿、蓝3种颜色误差范围

# 获得文件图片在现在的屏幕上面的坐标,返回的是一个元组(top, left, width, height)
# 如果截图没找到,pyautogui.locateOnScreen()函数返回None
a = pyautogui.locateOnScreen('a')
x, y = pyautogui.center(a) # 获得文件图片在现在的屏幕上面的中心坐标

2.2 AutoGUI问题

2.2.1函数问题

os函数问题

在测试过程中发现使用os.system函数时,会出现按键或者图像识别不工作的现象,寻求原因可能是因为os.system调用程序后会一直停留在这一函数,后续通过调用cmd脚本来间接启动程序,该问题解决。

2.2.2路径问题

  1. 绝对路径

绝对路径的使用只需要查看文件的属性即能查询到。例如:

os.system('C:\\Users\\%USERNAME%\\Desktop\\"A B C D"\\bat\\Setup.bat')

其中需要强调的有三点:

a.为了移植方便,用户名可以使用 '%USERNAME%' 代替,提高普适性。

b.针对路径有空格的问题,可以直接在有空格的文件上添加双引号"",添加后路径可用。

c.Python的"\"为转义作用,实际无法识别路径,需要使用"\\"代替,替换后路径可用。

  1. 相对路径

相对路径的使用需要将使用的文件放在Python程序的同文件或子文件中,以上面绝对路径举例,其中假设Python程序在"A B C D"文件中,如需调用Setup.bat文件,则需要以下程序:

os.system('bat\\Setup.bat')

2.2.3图像识别问题

当自己写的程序需要在不同分辨率的机器上使用时,非常难用,因为AutoGUI的图像识别是针对像素点进行识别的,当分辨率不一样的时候,部分程序根本无法识别。

后面更换了思路,针对有Button的程序,可以直接使用按键来实现启动操作等动作,实现更加便利,只不过需要添加一部分延时代码,防止冲突。

三、AutoGUI导出exe文件

3.1虚拟环境的安装

1.打开Anaconda Navigator环境配置。

2.创建新环境。

3.输入名称创建。

4.安装pillow包,搜索不到可以选择一下蓝色框,选择一下分类ALL。

5.安装pyinstaller包

3.2虚拟环境的使用

  1. 运行打包环境

左键点击1,再点击2

  1. 输入打包文件

a.输入需要打包的文件路径并回车

b.输入打包命令

pyinstaller -D A.py #-D:生成一个文件夹,里面是多文件模式,启动快。
pyinstaller -F A.py #-F:仅仅生成一个文件,不暴露其他信息,启动较慢。
  1. 输出打包文件

输出的文件或者程序放在了python程序的dist文件夹内。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

岗小李

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值