11

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

+0

Willkommen bei Stackoverflow! Es ist hilfreicher, wenn Sie den relevanten Code zusammen mit einer Erklärung veröffentlichen, was und wie * genau * es bricht. –

+0

kann ich hinzufügen, dass jede Benutzeraktion auf Seite $ .ajax Erfolg bricht und es ist nur auf jQuery 2.0. –

Antwort

19

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.

+0

Lebensretter. Ich finde dazu nur minimale Informationen aus dem Web - haben Sie Referenzen für das Problem oder die Lösung? – Andyrooger

+0

Siehe auch: https://fluentbytes.com/how-to-prevent-codedui-tests-from-breaking-angular-ajax-calls/. – Appulus

+0

Es funktioniert für jquery 2.0.0 aber nicht für 2.0.2 –