pyautogui GIMP自动化问题

时间:2018-07-30 20:14:57

标签: python pycharm pyautogui

我正在使用GIMP做一些自动化测试用例。我需要启动该程序并将鼠标/键盘操作发送给它。我正在使用subprocess.call()启动程序,并使用pyautogui发送鼠标/键盘操作。

import pyautogui
import subprocess

subprocess.call('gimp', shell=True)    
gimp_file = pyautogui.locateOnScreen('imgs/gimp_file.png', grayscale=True,region=(5, 28, 29, 19))

file_button_x, file_button_y = pyautogui.center(gimp_file)  
pyautogui.click(file_button_x, file_button_y, duration=0.75)

我遇到的问题是代码的pyautogui部分从未被命中,程序似乎只是挂起了。我已经在PyCharm中通过调试器运行,并且没有返回任何变量。如果我在python控制台中运行subprocess.call('gimp'),其余代码在另一个控制台中运行,则它会执行应有的操作。我认为可能是由于程序启动或窗口焦点引起的时间延迟;我添加了time.sleep(5)以解决前一个原因,但没有任何影响。我该如何解决?

1 个答案:

答案 0 :(得分:1)

subprocess.call()将等待该过程退出-不会发生(除非您退出GIMP),也不希望它等待。您应该使用subprocess.Popen(),并将stdin设置为subprocess.DEVNULL,并且stdout/stderr可以单独使用,也可以重定向到DEVNULL。这将允许您的程序在GIMP运行时继续进入pyautogui行。

请注意,gimp将显示初始屏幕,因此您可能需要稍等片刻,然后才能尝试找到其窗口并在其中单击。