【问题标题】:How to let pyautogui recognize popup windows?如何让pyautogui识别弹出窗口?
【发布时间】:2021-09-08 01:41:45
【问题描述】:

显然,pyautogui 在使用屏幕截图功能时无法识别“真实”屏幕。

以下简单代码在大多数情况下都能正常工作,但并非在所有情况下都适用。 显然,某些弹出窗口将无法识别(例如网页、Javascript(?) 或某些 Windows 消息)。

import pyautogui

try:
    pyautogui.click('myButtonSomewhereOnTheScreen.png')
    print("Button clicked")
except:
    print("Error: Button not found")

This issue 几年前就提出了,但据说这是 Pillow 的一个限制。多年来是否有任何改进,或者是否有人可能知道一种解决方法或不同的方法来包含此类弹出窗口?

【问题讨论】:

    标签: python windows popup screenshot pyautogui


    【解决方案1】:

    通常 pyautogui 无法检测弹出窗口,正如您提到的,这是 Pillow 库的限制。在以前的版本中,我们可以使用 pyautogui.locateonscreen 但这会导致问题,现在只能在程序已经启动时工作。

    【讨论】:

    • 感谢您的评论。是的,我试过pyautogui.locateOnScreen(),总的来说它可以工作,但它无法识别弹出窗口。我试图在网络浏览器的弹出窗口上单击“确定”。甚至使用 TAB 移动并按 ENTER 也不起作用。显然,我必须使用鼠标。但是如果我不知道确定按钮的位置可能会很困难。 “程序已经开始”是什么意思?哪个节目?
    • 很明显,当你在弹窗前运行程序时,问题是固定的,这与以前的版本有关。当然,您的问题并不清楚,并且您没有指定要做什么。如果要关闭弹出窗口,可以使用操作系统命令和其他库。
    • 好的,我想现在我明白了.... my 应用程序必须在我开始之前运行,例如网络浏览器。这就是我所做的:启动我的应用程序请求一些虚拟输入,例如input("Press Enter to continue") 让我的程序等待,启动另一个应用程序,现在它似乎识别出弹出窗口的 OK 按钮。很奇怪。这种奇怪行为的原因是什么?
    • 正如你所说,主要问题与 Pillow 相关 :) 这个库的工作方式也有点奇怪,我在自己的项目中也遇到了这些问题,我可以用不同的逻辑解决!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-03
    • 2018-12-12
    • 2013-11-06
    • 1970-01-01
    • 2014-02-24
    • 1970-01-01
    • 2017-03-18
    相关资源
    最近更新 更多