0

我正在使用 Python 在自动化无聊的东西的帮助下自动化一个冗长而无聊的过程。我本质上是使用它作为一个宏来为我完成我的工作,使用一系列 Pyautogui 命令来使用程序创建 PDF,然后使用 PyPDF2 将它们整理出来。它是为不同的机场创建性能文件。然而,不同的机场有不同数量的跑道,因此需要不同的时间来完成。

那么,有没有办法等到下面显示的“确定”框可以使用 Python 按下?

取消

好的

目前,我只是采用最坏的情况并暂停脚本,以显示跑道最多的机场所花费的时间(大约 90 秒),但是有些机场在 10 秒内完成,所以这里浪费了很多时间。

        time.sleep(15)
        pyautogui.press('enter')
4

1 回答 1

0

因此,我发现很难找到一种方法来检查按钮是否可以按下(取消或确定)。相反,我寻找其他指示计算完成的指标。我遇到了 winGuiAuto,它具有一些非常有用的功能,可以从窗口中提取文本和其他内容。

赢贵汽车

需要两个工具 - 如问题所示找到窗口的 hwnd,然后拉出文本。这些曾经是

findTopWindow
dumpWindow

作为一个例子,我在程序运行和完成后显示了窗口的输出。

跑步:

[[3736670, 'OK', 'Button'], [1180838, 'Cancel', 'Button'], [3737440, 'Calculating:  EGCC 05LAFTMP', 'Static'], [1050590, 'Start Calc:', 'Static'], [3999714, 'End Calc:', 'Static'], [4392774, 'Total Calc:', 'Static'], [8390102, 'Status:', 'Static'], [6489324, 'Calculation Time', 'Button'], [7997044, '12:47:02', 'Static'], [9242260, '12:47:11', 'Static'], [4589322, '', 'Static'], [4851642, 'Progress1', 'msctls_progress32'], [2885686, '--', 'Static']]

完全的:

[[3736670, 'OK', 'Button'], [1180838, 'Cancel', 'Button'], [3737440, 'Calculation Finished.', 'Static'], [1050590, 'Start Calc:', 'Static'], [3999714, 'End Calc:', 'Static'], [4392774, 'Total Calc:', 'Static'], [8390102, 'Status:', 'Static'], [6489324, 'Calculation Time', 'Button'], [7997044, '12:47:02', 'Static'], [9242260, '12:48:05', 'Static'], [4589322, '00:01:03', 'Static'], [4851642, 'Progress1', 'msctls_progress32'], [2885686, '/', 'Static']]

如您所见,“计算:”变为“计算完成”。

解决方案是实现一个检查语句,该语句仅在计算完成后才允许宏继续进行。

        hwnd = findTopWindow('Calculating')

        while True:
            data = dumpWindow(hwnd)
            if data[2][1] == 'Calculation Finished.':
                break`enter code here`
于 2016-12-06T12:54:38.110 回答