一.自动化脚本注意事项
背景:pyautogui基于坐标(x,y)或点击图片进行相关操作,分辨率不同会使坐标(x,y)发生偏移或图像不被识别,导致脚本无法正常使用,注意事项如下。
为保证自动化程序正常运行,尽可能关闭不相关的应用程序窗口。
为保证在指定窗口执行,用getWindowsWithTitle()获取窗口句柄,并 activate()将窗口置顶。
为保证窗口的位置坐标(x,y)不会更改,建议在相同的屏幕分辨率设备上运行脚本。
为保证按钮和菜单的位置不发生变化,建议每次maximize()最大化需要操作的应用程序窗口。
为保证程序在就绪后进行操作,建议每执行一步操作都加入适当的等待时间。
点击按钮或菜单,locateOnScreen()不依赖于坐标(X,Y),更稳定。
尽量用热键hotkey()或者keyDown('tab')键代替点击Click(),比坐标(x,y)更稳定更可靠。
二.鼠标相关-pyautogui
a.获取显示屏的尺寸
#引入pyautogui的包,取别名为pg
import pyautogui as pg
#获取屏幕尺寸
wSize = pg.size()
# 屏幕的宽
print(wSize[0])
print(wSize.width)
# 屏幕高
print(wSize[1])
print(wSize.height)
执行结果
b.获取鼠标位置
通过pyautogui工具获取坐标(X,Y)
#启动pyautogui自带的工具
import pyautogui as pg
pg.mouseInfo()
当鼠标移动到需要点击的按钮或者菜单上,实时看到坐标(X,Y)等信息。
通过图表获取坐标(X,Y)
截取全部刷新按钮,保存到桌面命名为refreshbtn.jpg。
import pyautogui as pg
try:
b = pg.locateOnScreen(r'C:\Users\mypc\Desktop\refreshbtn.jpg')
pg.click((b.left, b.top, b.width, b.height))
except:
print('未找到图片。')
import pyautogui as pg
try:
pg.click(r'C:\Users\mypc\Desktop\refreshbtn.jpg')
except:
print('未找到图片。')
通过跨界键,点击“全部刷新”
先点击键盘的ALT键,查看快捷键,如图,快捷键为 Y4
键盘先点击ALT键,再点击Y键,再点击数字4,会显示全部刷新按钮的快捷键盘为R
根据上述的实际操作步骤,模拟创建点击代码。加入Sleep休眠代码,是防止python程序运行太快,excel还没有准备好下一步响应,程序就运行结束。因为hotkey('ALT','Y','4'),hotkey('ALT+Y+4')未找到如何实现点击到二级菜单的快捷键的用法,所以示例代码使用了press函数。
import pyautogui as pg
#依次点击ALT
pg.press('ALT')
time.sleep(2)
#依次点击Y
pg.press('Y')
time.sleep(2)
#选择Analysis
#依次点击4
pg.press('4')
time.sleep(2)
#点击全部刷新
#依次点击R
pg.press('R')
运行效果图,正常点击“全部刷新”按钮。
c.获取窗口信息
遍历窗口进行查找
import pyautogui as pg
#获取所有打开的应用窗口
windows = pg.getAllWindows()
#如果当前没有窗口打开,提示异常
if len(windows) == 0:
raise Exception("窗口未找到")
#遍历窗口
for window in windows:
#窗口的名字包含关键字时,打印到屏幕上