Sto scrivendo i test WatiN per testare un'applicazione web Ajax e ho riscontrato un problema di temporizzazione con le richieste Ajax.Come aspettare che jQuery Ajax richieda il completamento da WatiN?
Dopo che una richiesta Ajax è stata attivata da un'azione sulla pagina, vorrei che WatiN attenda fino al completamento della richiesta prima di confermare che la pagina è stata aggiornata correttamente.
Ho la sensazione che la soluzione includa la valutazione di JavaScript per registrare i gestori per $.ajaxStart
e $.ajaxComplete
per verificare se le richieste sono in corso. Scoprirò a breve, ma volevo vedere se qualcun altro ha già risolto questo problema. Sembra che sarebbe un problema comune con il test Ajax.
Questa soluzione funziona bene a meno che una o più richieste di ajax non inizino prima che venga iniettato il javascript del monitor (a quel punto il contatore non è più preciso). Non so come iniettare il monitor in precedenza nel processo da WatiN. Può essere che la soluzione migliore sia quella di includere condizionalmente il monitor subito dopo l'aggiunta di jQuery durante l'esecuzione dei test. –
Inserisco i gestori di eventi globali ajax nella mia pagina principale dell'applicazione. Inoltre tengo solo un semaforo invece di un contatore: http://lebobitz.wordpress.com/2011/03/06/synchronizing-watin-and-ajax-with-jquery/ –
Un problema con il tuo codice però - se il il sito Web non ha il supporto di jQuery (come nel mio caso) - potresti prima volerlo "iniettare". Basta aggiungere questo codice prima dello "script del monitor". const string jquerry = @ "var element1 = document.createElement ('script'); element1.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js'; element1.type = 'text/javascript'; document.getElementsByTagName ('testa') [0] .appendChild (element1); "; browser.Eval (jquerry); – Alex