11

Próbuję uruchomić projekt testowy kodowanego interfejsu użytkownika na aplikacji asp.net MVC4. Aplikacja zawiera różne wywołania ajaxowe. Kiedy testuję to ręcznie, działa dobrze, ale kiedy testuję go za pomocą projektu testowego kodowanego-ui, to łamie się, ponieważ w wywołaniach ajaxa funkcja wywołania zwrotnego nie jest wywoływana. Czy ktoś może mi powiedzieć, czego tu brakuje? Z góry dzięki.Sukces JQuery AJAX nie jest wyzwalany z projektem testu kodowanego interfejsu użytkownika

+0

Witamy w StackOverflow! Bardziej pomocne jest opublikowanie odpowiedniego kodu wraz z wyjaśnieniem, co i jak * dokładnie * zrywa. –

+0

Mogę dodać, że każda akcja użytkownika na stronie dzieli sukces $ .ajax i jest dostępna tylko w jQuery 2.0. –

Odpowiedz

19

Co się dzieje źle

przeglądarkę Coded UI Microsoft wstrzykuje JavaScript Shim obiektu XMLHttpRequest do śledzenia. Wszelkie wywołania ajax na stronie będą używać tego shim zamiast prawdziwego XMLHttpRequest. Shim zakłada, że ​​callback zostanie dołączony do właściwości onreadystatechange XMLHttpRequest, ale jQuery 2.0 używa nowych zdarzeń onload i onerror, więc wywołanie zwrotne nigdy nie jest wywoływane przez podkładkę.

Obejście

Prace wokół jest dodanie następujących do pliku app.config swojego projektu badawczego:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <appSettings> 
    <add key="WebWaitForReadyLevel" value="3"/> 
    </appSettings> 
</configuration> 

Ustawienie WebWaitForReadyLevel do 3 przystanków zakodowanych UI WebBrowser z wstrzykiwanie javascript do śledzenia wywołań ajaxowych i timerów. jQuery otrzyma prawdziwy XMLHttpRequest, a twoje callbacki ajax znów będą działały.

+0

Life Saver. Znalazłem w Internecie minimalne informacje - czy masz jakieś odniesienia do problemu lub rozwiązania? – Andyrooger

+0

Zobacz także: https://fluentbytes.com/how-to-prevent-codedui-tests-from-breaking-angular-ajax-calls/. – Appulus

+0

Działa dla jquery 2.0.0, ale nie dla wersji 2.0.2 –