如何使用 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