一、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键盘函数
输入字符
pyautogui.typewrite('Hello world!') # 输入Hello world!字符串
pyautogui.typewrite('Hello world!', interval=0.25) # 每次输入间隔0.25秒,输入Hello world!
输入按键动作
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'按键
键盘对应符号
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路径问题
绝对路径
绝对路径的使用只需要查看文件的属性即能查询到。例如:
os.system('C:\\Users\\%USERNAME%\\Desktop\\"A B C D"\\bat\\Setup.bat')
其中需要强调的有三点:
a.为了移植方便,用户名可以使用 '%USERNAME%' 代替,提高普适性。
b.针对路径有空格的问题,可以直接在有空格的文件上添加双引号"",添加后路径可用。
c.Python的"\"为转义作用,实际无法识别路径,需要使用"\\"代替,替换后路径可用。
相对路径
相对路径的使用需要将使用的文件放在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,再点击2
输入打包文件
a.输入需要打包的文件路径并回车
b.输入打包命令
pyinstaller -D A.py #-D:生成一个文件夹,里面是多文件模式,启动快。
pyinstaller -F A.py #-F:仅仅生成一个文件,不暴露其他信息,启动较慢。
输出打包文件
输出的文件或者程序放在了python程序的dist文件夹内。