You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让pyautogui等待图片出现后点击,并依次处理后续图片

PyAutoGUI 浏览器自动化:等待图片出现并点击的优化方案

问题描述

我一直在用PyAutoGUI实现浏览器自动化操作,最初的代码如下:

time.sleep(1)
locationscs = pyautogui.locateOnScreen('scs.PNG', confidence=.8)
pyautogui.click(locationscs)
time.sleep(1)

这种方式并不理想,页面加载不及时就会导致点击失败。

我尝试过用循环等待,但代码会持续重复点击目标元素:

r = None
while r is None:
    location3 = pyautogui.locateOnScreen('ii.PNG', confidence=.7)
    pyautogui.click(location3)

修改后又导致脚本崩溃:

r = None
while r is None:
    location3 = pyautogui.locateOnScreen('ii.PNG', confidence=.7)
    pyautogui.click(location3)
    r = not None

现在需要实现等待图片1出现并点击,接着等待图片2出现并点击,再处理图片3的流程,该怎么解决?

解决方案

核心思路是封装一个通用函数,实现「等待图片出现 → 找到后点击 → 退出等待」的逻辑,避免无效循环和空值点击。

通用等待点击函数

import pyautogui
import time

def wait_and_click(image_path, confidence=0.7, interval=0.5):
    """
    等待指定图片出现在屏幕上,找到后点击图片中心,完成后返回位置
    :param image_path: 目标图片的本地路径
    :param confidence: 识别置信度(0-1,值越高识别越严格)
    :param interval: 每次识别的间隔时间(秒),降低CPU占用
    """
    while True:
        location = pyautogui.locateOnScreen(image_path, confidence=confidence)
        if location is not None:
            pyautogui.click(pyautogui.center(location))
            return location
        time.sleep(interval)

依次处理多图片的调用示例

# 按顺序等待并点击目标图片
wait_and_click('image1.PNG', confidence=0.8)
wait_and_click('image2.PNG', confidence=0.7)
wait_and_click('image3.PNG', confidence=0.7)

关键优化说明

  • 避免空值崩溃:只有当locateOnScreen返回有效位置时才执行点击,解决了原代码中location为None时点击报错的问题
  • 终止无效循环:找到图片并点击后直接退出循环,不会出现重复点击的情况
  • 低资源消耗:通过interval参数控制重试间隔,避免持续占用CPU

内容的提问来源于stack exchange,提问作者bpszbird

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 06:05:23