如何使用 pyautogui 等待特定图像出现在屏幕上?
How to wait for the specific image to appear on screen using pyautogui?
我有一个应用程序可以使用 pyautogui 模块实现自动化。我将参考图像保存在脚本目录中,经过一段时间的休眠后,我能够完成它。在某些版本中,特定图像需要一段时间才能出现。之后我的脚本抛出 attribute not found error
.
我需要知道如何控制 pyautogui 等到图像出现在屏幕上,然后再进行下一次执行。
我搜索了很多堆栈溢出问题,我在 pywinauto 模块中找到了 wait_until(),脚本等待特定的 window。同样的,我们有什么让pyautogui等待特定图像出现在屏幕上的吗?
Python 使用的版本:3.6.
这将等到它找到图像:
icon_to_click = "Recycle Bin"
r = None
while r is None:
r = pyautogui.locateOnScreen('rb.png', grayscale = True)
print icon_to_click + ' now loaded'
在 Python (3.6) 的较新版本中,如果找不到图像,locateOnScreen() 不再 returns None。它会引发异常。挣扎了 10 分钟后,我发现以下解决方案有效:
r = None
while r is None:
try:
print(pyautogui.locateOnScreen("rb.png"))
break
except Exception as e:
r = None
我有一个应用程序可以使用 pyautogui 模块实现自动化。我将参考图像保存在脚本目录中,经过一段时间的休眠后,我能够完成它。在某些版本中,特定图像需要一段时间才能出现。之后我的脚本抛出 attribute not found error
.
我需要知道如何控制 pyautogui 等到图像出现在屏幕上,然后再进行下一次执行。
我搜索了很多堆栈溢出问题,我在 pywinauto 模块中找到了 wait_until(),脚本等待特定的 window。同样的,我们有什么让pyautogui等待特定图像出现在屏幕上的吗?
Python 使用的版本:3.6.
这将等到它找到图像:
icon_to_click = "Recycle Bin"
r = None
while r is None:
r = pyautogui.locateOnScreen('rb.png', grayscale = True)
print icon_to_click + ' now loaded'
在 Python (3.6) 的较新版本中,如果找不到图像,locateOnScreen() 不再 returns None。它会引发异常。挣扎了 10 分钟后,我发现以下解决方案有效:
r = None
while r is None:
try:
print(pyautogui.locateOnScreen("rb.png"))
break
except Exception as e:
r = None