Non ho familiarità con PowerBuilder, ma ho un compito per creare un'applicazione di test UI automatica per PB. Abbiamo deciso di farlo in Python con pywinauto e librerie inaccettabili. Il problema è che alcuni elementi dell'interfaccia utente come il record degli elenchi appena aggiunti non possono essere aggiunti da esso (anche inspect32 non può ottenerlo). Qualche idea su come raggiungere questi elementi e renderli testabili?Come rendere l'applicazione di test dell'interfaccia utente PowerBuilder?
risposta
Sto sperimentando codice per uno strumento per l'automazione di GUI basate su PowerBuilder. Da quello che vedo, la soluzione migliore sarebbe utilizzare l'interfaccia nativa PowerBuilder (PBNI) e chiamare il codice PowerScript dal tuo NVO.
Se ti piace, sentiti libero di mandarmi una mail (vedi il mio profilo per il mio indirizzo email), sarei interessato a scambiare idee su come fare questo.
Non ho usato PowerBuilder per un po 'ma immagino che il problema che si sta tentando di risolvere sia simile a quello che sto cercando di indirizzare per le persone che realizzano progetti con sistemi SCADA come Wonderware Intouch.
Il problema con tale applicazione è che non esiste alcuna API per ottenere o impostare il valore di un controllo. Quindi un approccio pywinauto non può funzionare.
Ho creato un piccolo strumento per simulare gli eventi dell'utente e ottenere i risultati da una screencapture. Sono in grado di lavorare con ORM per l'analisi delle acquisizioni dello schermo. Non è il modo più semplice, ma funziona bene.
Lo strumento è open-source e gratuito e può essere scaricato da my website (Siamo spiacenti in francese). Hai solo bisogno di un account ma è anche gratuito. Chiedi solamente.
Se potete leggere francese, qui è one article about testing Intouch-based applications
Scusate per la promozione di sé, ma stavo affrontando un problema simile con nessuna soluzione così ho scritto la mia. Comunque, è gratis e open-source ...
Se stai testando DataWindows (la classe è pbdwxxx, ad esempio pbdw110) dovrai usare una combinazione di clic su coordinate specifiche e invio di tasti Tab per arrivare al controllo tu vuoi. Ovviamente puoi anche inviare i tasti freccia su e giù per spostarti tra le file. La cosa più semplice da fare è iniziare con un controllo normale come un SLE e una scheda in DataWindow. Il problema è che DataWindow è essenzialmente solo un'immagine. Non esiste alcun controllo per un dato campo finché non si sposta il focus lì facendo clic o facendo tab. Ho anche scoperto che l'interfaccia iAccessible di DataWindow è un po 'strana. Se si chiede a DataWindow l'oggetto con lo stato attivo, non si ottiene la risposta corretta. Se si enumera attraverso tutti i bambini, è possibile trovare quello che si concentra. Se puoi modificare la fonte, ti consiglio anche di impostare AccessibleName per i tuoi controlli DataWindow, altrimenti probabilmente non sarai in grado di identificare i controlli ad eccezione della posizione (dai controlli DataWindow intendo quelli all'interno di DataWindow, non della stessa DataWindow) . Se si tratta di un'applicazione MDI, potrebbe anche essere utile individuare la finestra MicroHelp (classe fnhelpxxx, ad esempio fnhelp110, trovare dalla finestra principale dell'applicazione) per determinare il contesto corrente.
Modificato per aggiungere: Sikuli sembra molto promettente per testare PowerBuilder. Funziona riconoscendo gli oggetti sullo schermo da un frammento di screenshot salvato. Cioè, fai uno screenshot della parte dello schermo che vuoi che trovi.
Ho visto in AutomatedQa supportare una ricetta che consiglia di utilizzare msaa e impostare alcune proprietà sui controlli. Non so se funziona.
La limitazione dell'utilizzo di MSAA per assistere con i test è che PowerBuilder offre solo le informazioni MSAA fornite esplicitamente dallo sviluppatore, con un paio di eccezioni. Nota che sto parlando di PB classico qui, non ho cercato nei WinForms. Ho aggiunto il supporto MSAA a molti dei controlli PFC nel nostro mid-tier. –
- 1. Powerbuilder Datawindow Errore
- 2. Un IDE alternativo per Powerbuilder Sybase
- 3. Test dell'interfaccia utente GTK +
- 4. Come ottenere il menu del foglio attivo in PowerBuilder?
- 5. Come rendere orizzontale il menu di navigazione dell'interfaccia utente jQuery?
- 6. Il selenio è il test dell'interfaccia utente Web come ________ è il test dell'interfaccia utente dell'applicazione Windows
- 7. Come faccio a rendere disponibile manifest durante un'esecuzione di test di Mavn/Surefire unittest "mvn test"?
- 8. Test unità Interfaccia utente Cocoa
- 9. Esecuzione di test come utente diverso in Visual Studio
- 10. Per Twitter, come creare account utente di test?
- 11. Come velocizzare i casi di test dell'interfaccia utente in Xcode?
- 12. Come rendere Egit ricordare password e nome utente?
- 13. Come rendere l'accesso utente per un'app Web offline?
- 14. Acquisto in-app, rendere l'interfaccia utente di Google Play trasparente
- 15. Come posso rendere OSX's rand() fallire il test dello spettro?
- 16. Test delle unità Android: come rendere una classe più testabile?
- 17. Posso rendere @OnApplicationStart non eseguito sui test?
- 18. Come si fa a rendere il test non noioso?
- 19. Test carico Web VS2010 con login utente
- 20. Come importare file di testo delimitato da virgole in DataWindow (PowerBuilder 11.5)
- 21. CakePHP 2.3 - Unit test Utente Login
- 22. Test Android Junit4 sul thread dell'interfaccia utente
- 23. Test Sandbox iOS Account utente Gestione sottoscrizioni
- 24. Test di strumentazione Android - Problemi di filettatura dell'interfaccia utente
- 25. Miglior approccio al test dell'interfaccia utente QT
- 26. Autenticazione utente nei test con Django factory_boy
- 27. Test dell'interfaccia utente operazione fotocamera con Espresso
- 28. Come disattivare gli screenshot automatici sul test dell'interfaccia utente (Xcode)
- 29. Come attivare un LongClick Android nel test dell'interfaccia utente Xamarin
- 30. Come rendere UIView selezionabile
Ciao. La nostra applicazione Python funziona abbastanza bene oltre ad alcune eccezioni.Non impostiamo direttamente il valore di controllo ma diciamo ad esempio al sistema: "vai alla posizione di riposo x, y digita del testo e fai clic su" Stiamo usando pywinauto e iaccesible per trovare il controllo e ottenere la posiotion, il valore ecc. Ma il il problema è che ci sono alcuni elementi che pywinauto o iaccesible non riesce a trovare. –