2015-09-29 84 views
5

:Python - pywinauto ile kontrol pencere pencere minimize veya gizli iken ben yapmaya çalışıyorum ne

I (arka planda otomatik ++ not defteri yüklemek için pywinauto ile Python komut dosyası oluşturmak için çalışıyorum gizli veya simge durumuna küçültülmüş), notepad ++, diğer bir yazılımla çalışacak şekilde düzenleyeceğinden sadece bir örnektir.

Sorun:

Sorun yükleyici gizli veya minimize ederken bunu yapmak istiyorum yani, ama benim fareyi eğer komut çalışmayı durdurur.

Soru: notepad ++ yükleyici gizli veya minimize ederken ben, bu senaryoyu yürütmek ve çalışır hale nasıl

.

import sys, os, pywinauto 

pwa_app = pywinauto.application.Application() 

app = pywinauto.Application().Start(r'npp.6.8.3.Installer.exe') 

Wizard = app['Installer Language'] 

Wizard.NextButton.Click() 

Wizard = app['Notepad++ v6.8.3 Setup'] 

Wizard.Wait('visible') 

Wizard['Welcome to the Notepad++ v6.8.3 Setup'].Wait('ready') 
Wizard.NextButton.Click() 

Wizard['License Agreement'].Wait('ready') 
Wizard['I &Agree'].Click() 

Wizard['Choose Install Location'].Wait('ready') 
Wizard.Button2.Click() 

Wizard['Choose Components'].Wait('ready') 
Wizard.Button2.Click() 

Wizard['Create Shortcut on Desktop'].Wait('enabled').CheckByClick() 
Wizard.Install.Click() 

Wizard['Completing the Notepad++ v6.8.3 Setup'].Wait('ready', timeout=30) 
Wizard['CheckBox'].Wait('enabled').Click() 
Wizard.Finish.Click() 
Wizard.WaitNot('visible') 

cevap

6

sorun buradadır:

Wizard['Create Shortcut on Desktop'].Wait('enabled').CheckByClick() 

CheckByClick()

gerçek fare imlecini ve gerçekçi bir tıklama gerçekleştirir ClickInput() yöntemini kullanır

Bu şimdiye kadar benim kodudur.

Yerine Check() yöntemini kullanın.

[DÜZENLE] yükleyicisi doğru çözüm o kadar görünebilir BM_SETCHECK işlemek etmezse:

checkbox = Wizard['Create Shortcut on Desktop'].Wait('enabled') 
if checkbox.GetCheckState() != pywinauto.win32defines.BST_CHECKED: 
    checkbox.Click() 

Ben sırasıyla yöntemleri CheckByClick ve CheckByClickInput oluşturarak sonraki pywinauto sürümünde bunu çözecektir.


[DÜZENLEME 2] ile ve fare hareketleri olmadan benim düzeltme ile Senaryonuzu çalıştı ve mükemmel (ve çok hızlı) çalışır. Win7 x64, 32-bit Python 2.7, pywinauto 0.5.3, yönetici olarak çalıştırın.

import sys, os, pywinauto 

app = pywinauto.Application().Start(r'npp.6.8.3.Installer.exe') 

Wizard = app['Installer Language'] 

Wizard.Minimize() 
Wizard.NextButton.Click() 

Wizard = app['Notepad++ v6.8.3 Setup'] 

Wizard.Wait('visible') 
Wizard.Minimize() 

Wizard['Welcome to the Notepad++ v6.8.3 Setup'].Wait('ready') 
Wizard.NextButton.Click() 

Wizard.Minimize() 
Wizard['License Agreement'].Wait('ready') 
Wizard['I &Agree'].Click() 

Wizard.Minimize() 
Wizard['Choose Install Location'].Wait('ready') 
Wizard.Button2.Click() 

Wizard.Minimize() 
Wizard['Choose Components'].Wait('ready') 
Wizard.Button2.Click() 

Wizard.Minimize() 
checkbox = Wizard['Create Shortcut on Desktop'].Wait('enabled') 
if checkbox.GetCheckState() != pywinauto.win32defines.BST_CHECKED: 
    checkbox.Click() 
Wizard.Install.Click() 

Wizard['Completing the Notepad++ v6.8.3 Setup'].Wait('ready', timeout=30) 
Wizard.Minimize() 
Wizard['CheckBox'].Wait('enabled').Click() 
Wizard.Finish.Click() 
Wizard.WaitNot('visible') 
+0

Yine de çalışmıyor ... komut dosyasını çalıştırdığımda fareyi hareket ettirirseniz duracak ve herhangi bir tuşa basmayacaktır. Ve eğer fareyi hareket ettirmezsem 'Konum Seç'i Seçin' duracaktır, eğer hareket edersem fareyi hareket ettirdiğimde duracaktır. –

+0

Sadece fareyi hareket ettirmeden pencerede fareye sahip olsaydım, komut dosyasının çalışmayı durduracağını, ancak pencerede değilken fareyi kullanırsam, o zaman işe yarayacak, bu yüzden benim problemim şu ki; Pencereyi nasıl gizleyeceğinizi anlamaya çalışın. Bana yardım edebilir misin? –

+1

Benim için Wizard.Minimize() 'ile çalışır. Cevabı güncellenmiş senaryo ile düzenledim. Eğer hala orada sıkışmışsanız, lütfen stdout/stderr dosyasını sağlayın. –