【发布时间】:2022-01-17 17:06:17
【问题描述】:
所以我试图运行一个简单的 subprocess.Popen 来运行程序的 GUI,然后使用 pyautogui 进行一堆自动点击。我遇到了一个问题,当我将一条路径放置到 GUI 时,它会打开 GUI 并且点击工作正常。但是,当我将它替换为不同 GUI 的路径时,不会发生点击,但是,它会打印出“完成的点击”,表明程序确实完全执行了。然而,我很困惑,为什么这些点击没有发生。这是我的代码。
def gui_call_thread():
subprocess.Popen(["C:\\Program Files (x86)\\Arduino\\arduino.exe"], shell = True)
# works for C:\\Program Files (x86)\\Arduino\\arduino.exe
# does not work for C:\\Program Files (x86)\\Texas Instruments\\TX7316 EVM\\TX7316 EVM.exe
time.sleep(10) # wait for GUI to load before executing clicks
pyautogui.click(1076,537)
time.sleep(0.5)
pyautogui.click(1065,558)
time.sleep(0.5)
pyautogui.click(1060,643)
print('Executing...')
time.sleep(3)
pyautogui.click(224,110)
time.sleep(0.5)
pyautogui.click(249,135)
time.sleep(0.5)
pyautogui.click(922,507)
time.sleep(0.5)
pyautogui.click(1139,459, clicks = 2)
print('Finished Clicks')
gui_call_thread()
【问题讨论】:
-
如果除了你之外没有人拥有这两个文件,我们该怎么说?
-
顺便说一句,我通常建议避免使用
shell=True,除非您有特定且令人信服的理由来使用它。启动 shell 可以隐藏真正的错误,因为问题会报告给 shell,而不是调用者。 -
你不能在相同的位置点击两个不同的程序并假设它做了什么。这些坐标有意义吗?您如何识别成功的点击?
-
@ThomasWeller 它没有做同样的事情,但关键是点击实际上是在调用一个程序时发生的,而在另一个程序中根本不会发生。点击可能不会做任何事情,但至少它们是可见的并且在一种情况下会发生,对吗?
-
@CharlesDuffy 我试图避免这种情况,但是当我将其设置为 False 时出现操作系统权限错误,所以我认为我需要使用它。
标签: python subprocess popen