pyautogui GIMP自动化问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pyautogui GIMP自动化问题相关的知识,希望对你有一定的参考价值。
我正在用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)
来解决前一个原因,但没有影响。我怎么解决这个问题?
答案
subprocess.call()
将等待进程退出 - 这不会发生(除非你退出GIMP),你也不想等待。你应该使用subprocess.Popen()
,stdin
设置为subprocess.DEVNULL
和stdout/stderr
要么单独留下,要么也重定向到DEVNULL
。这将允许您的程序进入pyautogui
线,而GIMP正在运行。
请注意,gimp会显示启动画面,因此在尝试查找其窗口并“单击”其中之前,您可能需要等待一段时间。
以上是关于pyautogui GIMP自动化问题的主要内容,如果未能解决你的问题,请参考以下文章
在 Tkinter 中使用 Pyautogui 进行自动化时,窗口会调整大小并放错位置