Utilizziamo Selenium con l'API Java e alcune estensioni utente JavaScript. Utilizziamo molte chiamate AJAX nella nostra app. Molti dei nostri test falliscono casualmente perché a volte le chiamate AJAX terminano più lentamente delle altre volte, quindi la pagina non è completamente caricata. Lo aggiustiamo attendendo elementi specifici o Thread.sleep. Stavo cercando di trovare un modo per invece aspettare il completamento del traffico di rete. In modo da poter fare questo:Selenio - Attendi il traffico di rete
selenium.click("some JS button");
selenium.waitForNetwork();
assertTrue(something);
In questo modo siamo in grado di sbarazzarsi del sonno filo e hanno test passano più velocemente quando il server risponde più velocemente e non avere così tanti test falliscono a causa di problemi di temporizzazione.
Non sono stato in grado di trovare un modo per farlo cercando su Google. Qualcuno ha qualche idea su come possiamo riuscirci? (Preferibilmente tramite Javascript o l'API Java ma tutti i suggerimenti sono benvenuti).
Nota: le altre varianti di "waitFor" non sono quello che sto cercando. Stiamo già utilizzando quelli in clic e altre cose. Sto cercando qualcosa che aspetti il TRAFFICO DI RETE. Grazie per tutto il feedback, proverò un paio di suggerimenti, ma sono ancora aperto ad altre idee.
Grazie.
Facciamo la stessa cosa per il nostro framework AJAX costruito in casa, chiamando la funzione IsTheCountZeroYet() in WaitForCondition(). Capisco che puoi farlo facilmente con jQuery. Altri quadri, forse anche. –
La cosa interessante è che i contatori ajax in prototype.js sono bacati, non sempre ritornano a 0.E gli effetti visivi non hanno ancora questo tipo di contatore. Quindi abbiamo dovuto rollare il nostro. – krosenvold