2010-04-06 24 views
5

ci occupiamo principalmente dell'emulazione di un browser per recuperare pagine Web, cercando di automatizzare i test su diverse pagine Web. Questo sarà usato per (idealmente) applicazioni console-ish che vengono eseguite in background e generano report.Emulazione di un browser web

Abbiamo provato ad andare con .NET e la biblioteca WatiN, ma è stato costruito su un Marshalled IE, e quindi mancava molte caratteristiche che abbiamo violato con chiamate a codice nativo non gestito, ma alla fine della giornata è IE non è sicuro da thread né processo sicuro e molte delle funzionalità necessarie potrebbero essere implementate solo modificando i valori del Registro di sistema ed è stato terribilmente poco flessibile.

  • supporto proxy
  • JavaScript SOSTEGNO- dobbiamo essere in grado di analizzare il DOM reale dopo ogni javascript ha eseguito (e, si spera viene generato un evento per gestire tutte le chiamate Ajax)
  • possibilità di salvare tutti i contenuti della pagina incluso immagini dalla cache del pagina caricata in una posizione separata
  • capacità di cancellare i cookie/cache, ottenere il cookie/cache, ecc
  • possibilità di impostare le intestazioni e modificare i dati di post per ogni chiamata del browser
  • di processo e/o di thread-safe sarebbe l'ideale
  • E per l'amore di drogs, un'API che non è del tutto criptico

Lingue accettabili C++, C#, Python, tutto ciò che può essere un po 'di storia semplice applicazione che è abbastanza sopportabile e non ha una sintassi completamente "non tradizionale" come Ruby.

Dalla mia ricerca, e credetemi io sono terribile a ricerche di Google, ho sentito parlare bene di WebKit ... sarebbe il modulo Qt QtWebKit gestire tutte queste caratteristiche?

+0

Non ne so abbastanza per sapere se può essere d'aiuto, ma in alcune edizioni di VS 2010 c'è qualcosa chiamato "Manual Testing" che consente di registrare le interazioni con una pagina web. È quindi possibile scavare nel codice e automatizzare il test, e presumibilmente mi è stato detto che ciò che registra è a livello http. Quindi il tuo codice di test funzionerebbe a un livello abbastanza basso. Non so quanto possa essere disordinato il codice generato. – AaronLS

+0

Non è necessario apportare modifiche reali ai registri per IE; puoi dire a IE di usare una radice alternativa. – MSalters

risposta

1

So che hai menzionato che non ti piace la sintassi di Ruby (nemmeno io), ma devo solo intervenire e dire che Watir è probabilmente la cosa migliore là fuori per quello che stai cercando di fare.

EDIT: Sembra che ci sia una contro-parte Java chiamato Watij

+0

Sì, è quello che abbiamo visto, ma siamo già in ritardo e non possiamo permetterci di imparare la sintassi, per non parlare dei problemi di distribuzione con il client. Abbiamo bisogno di una soluzione in qualche modo pronta per lo stato attuale degli straordinari. Immagino che Ruby possa probabilmente essere compilato in un exe indipendente, e potremmo finire per dover andare con Watir se non c'è nient'altro. –

+0

@Sean capito. Vedi modifica. –

+0

"Attualmente Watij supporta l'automazione di Internet Explorer solo su Windows. Sono in programma piani futuri per supportare altri come Mozilla." - Sì, costruire IE è solo destinato a fallire! >. < –

1

ho solo scavato in questo recentemente me stesso, quindi non posso dire che questo fa tutto ciò che hai elencato, ma controlla GeckoFx.

Dal sito: GeckoFX è un componente open source che lo rende facile incorporare Gecko di Mozilla (Firefox) in qualsiasi Windows NET Form. Scritto in C# pulito e completamente commentato, GeckoFX è il sostituto perfetto per il controllo WebBrowser predefinito basato su Internet Explorer.

Per quanto riguarda le mie impressioni: ha spazzato via il .NET WebBrowser predefinito in termini di prestazioni e stabilità.