我进行了搜索,但在这里找不到我的问题的解决方案。
我正在尝试使用 python 进行自动化,在我公司的软件中执行操作。该软件使用windows cmd终端作为界面(conhost.exe)。
我有另一个软件可以执行并启动该过程,我的自动化在屏幕打开时启动。
随着自动化步骤的继续,我需要检查自动化是否处于正确的步骤或者是否从系统收到任何消息。这是我的问题。
我找不到任何解决方案来废弃窗口中的文本,因为我找到的所有解决方案都使用
subprocess
库,但我无论如何都看不到将子进程用于已打开的终端(或cmd)。
如果我可以获得窗口的输出,我就会搜索屏幕上需要显示的文本。
一种相当暴力的方法:
使用 Pillow,截取窗口所需区域的屏幕截图,并将其与模板(事先拍摄)进行比较。如果模板匹配,则一切正常。
from PIL import Image, ImageGrab, ImageChops
template = Image.open("expectation.jpg")
region = (300, 300, 600, 600)
reality = ImageGrab.grab(region)
if ImageChops.difference(template, reality).getbbox():
raise AssertionError("This output was not expected")
如果命令窗口不在特定位置,您可以自行将其移动到固定位置。