2017-02-23 116 views
1

我使用pyautogui編寫了一個腳本,該腳本應該啓動一個程序(IDE),然後開始使用它。 這是劇本至今:使用pyautogui自動化鼠標和鍵盤的更好方法

#! python3 
# mouseNow.py - Displays the mouse cursor's current position. 
import pyautogui, sys, subprocess 
from time import sleep 

x,y = 1100,550 

subprocess.call([r'C:\...exe', arg1, arg2]) 
pyautogui.click(x,y) 
sleep(5) # 2 sec should suffice but this is for safety 
pyautogui.typewrite(my_string) 
pyautogui.press('enter') 

這工作很好,但我想成爲便攜。 x,y值取決於我啓動程序後程序提示出現在屏幕上的位置,但我認爲這不是便攜式。有沒有辦法將鼠標指向提示而不提供常量參數?像move_mouse_to_window_of_this_process_after_starting_it()

還有,我用sleep()所以我想它出現後,將數據寫入到窗口,但我想這不是一個很好的方式(一些PC將運行該慢得多,我猜),所以是有一種方法可以知道提示何時出現,然後執行pyautogui.typewrite(my_string)

編輯:我發現了move_mouse_to_window_of_this_process_after_starting_it() 一個簡單的解決方案:

>>> pyautogui.hotkey('alt', 'tab')

回答

1

如果您需要便攜和可靠的解決方案,您必須找到支持輔助功能技術的庫,以通過文本訪問GUI元素。基本技術包括:

  • 的Win32 API,MS UI自動化(視窗)
  • AT-SPI(Linux)的
  • 蘋果訪問性API(MacOS的)

有幾個開源GUI支持其中一些技術的自動化庫(通常爲1或2個)。 Python的解決方案:

還有a thread on StackOverflow就很難睡VS靈活等候。

享受! :)

1

您正在使用的.exe不包括替代座標或盲目射擊(標籤,標籤交互的方式,輸入等..)。

如果應用程序有一個API,您可以以編程方式與它進行交互。 如果沒有,您只能嘗試匹配x屏幕分辨率的位置,並且只有在全屏/窗口全屏中使用GUI時纔可以。

+0

是否有另一種與.exe文件交互的方式,不會排除替代? – CIsForCookies

相關問題