Python 运行 应用并等待其加载后再进行交互

Python run app and wait for it to load before interacting

我正在尝试打开一个应用程序并与之交互。我在打开应用程序时遇到一个问题,但由于它的大小,它需要一段时间才能出现,因此我想以 dynamic/pythonic 方式捕获应用程序对象。

import os
import subprocess
import win32com.client

timeout = 5

big_app = r'C:\Path2BigApp\app.exe'
os.startfile(big_app)

try:
    my_app_obj = win32com.client.GetObject("AppName")
    # further steps with my_app_obj
except:
    print("nay")

我试过 os.startfile(big_app) 启动应用程序但不等待应用程序成功打开,所以它总是评估为“否”,subprocess.call(big_app, timeout) 打开应用程序并冻结 python 直到应用程序终止,然后评估以下代码,subprocess.Popen(big_app) 给出与第一个选项相同的结果,而 subprocess.Popen(big_app).wait(timeout) & subprocess.Popen(big_app).communicate(timeout) 仅导致 TimeoutExpired 错误,因为没有 interaction/termination 那里。我知道我可以在循环中使用一些 wait/sleep 操作,但我希望有更多 pythonic 方法来解决这个问题。你对此有什么建议吗?

你有方法检查你的应用程序是否加载成功吗?

我会启动一个 while 循环,尝试检测应用何时加载。如果未加载 - 请稍等并重复,如果已加载则继续。