2012-08-07 49 views
0

如何閱讀下面的標題名稱是代碼如何閱讀標題名稱中使用Pywinauto

from pywinauto.application import * 
import time 
app=Application.Start("apps.exe") 
app.window_(title="aps a.b.c.d") 
time.sleep(2) 

之後的代碼是這樣window is not found給錯誤。

所以,我的問題是如何通過aps a.b.c.d到窗口標題。

+0

由於您提供的代碼不會引發任何錯誤(我使用Notepad.exe進行了試用並且工作正常),所以您在此嘗試完成的功能並不十分清楚。你究竟想在這裏做什麼,哪些不起作用?你能提供顯示錯誤的代碼嗎? – Raceyman 2012-08-07 19:13:03

+0

當我使用上面的代碼給出錯誤「沒有找到窗口」時,我有屏幕名爲aps a.b.c.d – user1575730 2012-08-08 07:25:13

+0

@ user157530然後這裏一定還有其他事情在發生,但是您沒有提供太多的數據來處理。錯誤的確切文字是什麼?你使用的是什麼版本的Python?你使用的是什麼版本的pywinauto?你使用的是哪個版本的Windows? – Raceyman 2012-08-08 14:01:03

回答

0

我注意到pywinauto可能會導致真正的subtile時間錯誤。如果這是你的問題,這甚至不是一個壞的問題。

僅僅因爲該過程已經開始並不意味着該窗口存在並且完全形成。你的睡眠應該在Application.Start()之後。但是這是一個sl散的解決方案,在所有情況下都不適用於所有系統。

我不得不使用len(pwa_app.windows_())和pwa_app.top_window_()來確保應用程序處於我想要的狀態。

然而,這是它的缺點。那些功能似乎有能力在窗口被創建或銷燬時引發異常。因此,我通常沒有使用簡單的time.sleep()調用,而是使用類似的方式。

#Do While Loop; continuous retry on exception 
condition = True 
while condition: 
    try: 
     window_count = len(app.windows_()) 
    except: 
     continue 

    if window_count == num: 
     condition = False 
    else: 
     time.sleep(WAITTIME) 

我會愛如果有人能解釋一個更好的方法給我。我一直無法在文檔中發現這些問題。雖然這不夠高雅,並且會讓CPU負擔很重,但它可以在100%的時間內運行。

編輯

在瀏覽計算器,我發現pywinauto提供function,做正是我的例子做什麼。