Sto tentando di automatizzare un'applicazione utilizzando AutoIt, e ho bisogno di attendere che appaia un controllo all'interno dell'applicazione prima che l'automazione possa iniziare. Questo controllo viene caricato poco dopo l'avvio dell'applicazione, ma non modifica il titolo della finestra. Come posso aspettare che appaia il controllo?AutoIT Attendere la comparsa di un elemento di controllo
risposta
Per ottenere un handle per un controllo su un'altra GUI è necessario utilizzare AutoIt Window Info Tool per identificare tale controllo. Per ottenere il nome della classe del controllo, vai alla scheda "Controllo" e cerca il valore per "NomeClasseNN". Ora puoi usare questo valore come ho fatto nell'esempio qui sotto.
Ovviamente è necessario sostituire "Button1"
con le informazioni ottenute dallo Strumento Info Auto e modificare di conseguenza i titoli delle finestre.
Global $hCtrl = 0, $Waiting = True
; your GUI loop
While (1)
If $Waiting And WinExists("Title of OtherApp.exe") Then
$hCtrl = ControlGetHandle("Title of OtherApp.exe", "", "Button1")
If $hCtrl Then
; we got the handle, so the button is there
; now do whatever you need to do
GUICtrlCreateLabel("Button is there!", 10, 10)
$Waiting = False
EndIf
EndIf
$iMsg = GUIGetMsg()
Switch $iMsg
Case $GUI_EVENT_CLOSE
ExitLoop
EndSwitch
WEnd
Vorrei aggiungere alla risposta Mrt. Per esempio, io sto cercando di ottenere il momento in cui titolo all'interno ovale nero è già visibile, cioè
Ma qui è la prima fase di lancio, quando $hCtrl
non è ovviamente visibile
ma $hCtrl = ControlGetHandle("Title of OtherApp.exe", "", "Static13")
ritorna ad-hoc TRUE già (qualcosa come <HWnd>0x000...192
etc.)
La mia soluzione è quella di aggiungere (controllo) titolo a ControlGetHandle:
ControlGetHandle("Title of OtherApp.exe", "Отключено", "Static13")
I downstaid potrebbero spiegare perché, a beneficio degli studenti? – Mawg
Non funziona ora, ma l'interfaccia di destinazione è comunque andata avanti. – Hippopotamus
- 1. Come attendere la comparsa del server ed eseguire il test dell'unità da Jenkins/Hudson
- 2. WebDriver - attendere elemento utilizzando Java
- 3. Autoit Recorder non disponibile
- 4. Ottenere un elenco di tutte le finestre aperte utilizzando AutoIt
- 5. Specificare un segnaposto di elemento impostando la proprietà ID di un controllo su "itemPlaceholder"
- 6. Come attendere che un elemento non esista più in Selenium
- 7. Come posso attendere che un elemento sia selezionabile in WebDriverJS?
- 8. Ottenere la dimensione di un elemento di CSS3 trasformato
- 9. Come posso rimuovere la prima comparsa di un numero in una lista? Haskell
- 10. Utilizzare la casella di controllo all'interno di un controllo ripetitore
- 11. Elementi selezionabili Elemento di controllo in WPF
- 12. Jquery: attendere la richiamata prima di restituire
- 13. Estrazione stringa di testo dopo la comparsa ennesima di un personaggio in Excel (funzioni o VB)
- 14. Come attendere la pressione di un tasto in R?
- 15. Scelta di un linguaggio di script di automazione di Windows. AutoIt vs Autohotkey
- 16. node.js attendere la risposta
- 17. menu a comparsa Android
- 18. L'utilizzo di un DataTemplate per un oggetto Menu provoca la comparsa di spazio aggiuntivo sul lato sinistro?
- 19. AutoIt come strumento di automazione GUI per Java
- 20. Aggiungi elemento a controllo Listview
- 21. Attendere un metodo asincrono di annullamento
- 22. La "zona visibile" di un controllo?
- 23. Come trovare la posizione di un elemento nel controllo del browser Web?
- 24. La sequenza contiene più di un elemento
- 25. Passando una funzione come parametro nella AutoIt
- 26. .NET --- controllo TextBox - attendere fino all'utente avviene digitando
- 27. Disabilita popup a comparsa ASP.NET
- 28. Attendere la richiamata in javascript
- 29. Aggiunta di un elemento all'inizio di un elemento di gruppo
- 30. Trova la posizione di un elemento all'interno di un elenco
Mentre ($ in attesa), non mentre (1). Non uscirà mai dal ciclo while. Contiene però questa modifica, quindi grazie per la risposta! –
@JohnMoses No 'While (1)' è corretto poiché questo è solo uno snippet e non una soluzione pienamente funzionante. Gli script AutoIt che hanno una propria interfaccia utente sono costituiti da un loop infinito per catturare i messaggi dell'interfaccia utente e questo è ciò che volevo mostrare nel mio script. Vedi: https://www.autoitscript.com/autoit3/docs/guiref/GUIRef_MessageLoopMode.htm – mrt
@JohnMoses Ho esteso il mio esempio in modo che sia più chiaro. (si spera :)) – mrt