2009-11-16 7 views
5

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

2

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.

1

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 ...

+1

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. –

1

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.

1

Ho visto in AutomatedQa supportare una ricetta che consiglia di utilizzare msaa e impostare alcune proprietà sui controlli. Non so se funziona.

+0

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. –

Problemi correlati