Ich versuche zu laufen ein Coded-UI Testprojekt auf einer asp.net MVC4 Anwendung ausgelöst zu werden. Die Anwendung enthält verschiedene Ajax-Aufrufe beteiligt. Wenn ich es manuell testen, funktioniert es gut, aber wenn ich es mit coded-ui testen Projekt testen, bricht es, weil in den Ajax-Aufrufe die Callback-Funktion nicht aufgerufen wird. Kann jemand mir sagen, was ich hier fehlt.? Vielen Dank im Voraus.JQuery AJAX Erfolg nicht mit Coded UI Testprojekt
Antwort
Was
Microsofts Coded UI Browser falsch läuft spritzt Javascript, um das XMLHttpRequest-Objekt für die Verfolgung Shim. Alle Ajax-Aufrufe auf der Seite verwenden dieses Shim anstelle der echten XMLHttpRequest. Das Shim nimmt an, dass Ihr Abschlussrückruf an die onreadystatechange -Eigenschaft von XMLHttpRequest angefügt ist, aber jQuery 2.0 verwendet die neuen onload- und onerror-Ereignisse, sodass der Rückruf nie vom Shim aufgerufen wird.
Umgehung
Die Work-around ist die folgende in die Datei App.config für Ihren Test Projekt hinzuzufügen:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="WebWaitForReadyLevel" value="3"/>
</appSettings>
</configuration>
Einstellung WebWaitForReadyLevel bis 3 stoppt die codierten UI WebBrowser aus der Injektion Javascript, um Ajax-Anrufe und Timer zu verfolgen. jQuery bekommt eine echte XMLHttpRequest, und Ihre Ajax Callbacks funktionieren wieder.
Lebensretter. Ich finde dazu nur minimale Informationen aus dem Web - haben Sie Referenzen für das Problem oder die Lösung? – Andyrooger
Siehe auch: https://fluentbytes.com/how-to-prevent-codedui-tests-from-breaking-angular-ajax-calls/. – Appulus
Es funktioniert für jquery 2.0.0 aber nicht für 2.0.2 –
Willkommen bei Stackoverflow! Es ist hilfreicher, wenn Sie den relevanten Code zusammen mit einer Erklärung veröffentlichen, was und wie * genau * es bricht. –
kann ich hinzufügen, dass jede Benutzeraktion auf Seite $ .ajax Erfolg bricht und es ist nur auf jQuery 2.0. –