Wir verwenden Selenium mit der Java-API und einigen Javascript-Benutzererweiterungen. Wir verwenden viele AJAX-Anrufe in unserer App. Viele unserer Tests scheitern nach dem Zufallsprinzip, da manchmal die AJAX-Aufrufe langsamer enden als zu anderen Zeiten, so dass die Seite nicht vollständig geladen ist. Wir reparieren das, indem wir auf bestimmte Elemente oder Thread.sleep warten. Ich habe versucht, einen Weg zu finden, stattdessen nur auf den Abschluss des Netzwerkverkehrs zu warten. Damit wir dies tun könnte:Selenium - Warten auf Netzwerkverkehr
selenium.click("some JS button");
selenium.waitForNetwork();
assertTrue(something);
Auf diese Weise können wir loswerden der Faden schlafen und haben Tests schneller passieren, wenn der Server schneller reagiert und haben nicht so viele Tests wegen Zeitproblemen fehlschlagen.
Ich habe keine Möglichkeit gefunden, diese Suche nach Google zu tun. Hat jemand Ideen, wie wir das erreichen können? (Vorzugsweise entweder durch Javascript oder die Java API, aber alle Vorschläge sind willkommen).
Hinweis: die anderen Variationen von "waitFor" sind nicht das, wonach ich suche. Wir verwenden diese bereits in Klicks und anderen Dingen. Ich suche nach etwas, das auf den NETZWERKVERKEHR wartet. Danke für all das Feedback, ich werde ein paar Vorschläge ausprobieren, aber ich bin immer offen für andere Ideen.
Danke.
Wir machen dasselbe für unser internes AJAX-Framework und rufen die Funktion IsTheCountZeroYet() in WaitForCondition() auf. Ich verstehe, dass Sie es einfach mit jQuery machen können. Andere Frameworks, vielleicht auch. –
Das Interessante ist, dass die Ajax-Zähler in prototype.js fehlerhaft sind und nicht immer auf 0 zurückgehen.Und die visuellen Effekte haben diese Art von Zähler noch nicht. Also mussten wir unsere eigenen rollen. – krosenvold