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
Odpowiedz
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.
Life Saver. Znalazłem w Internecie minimalne informacje - czy masz jakieś odniesienia do problemu lub rozwiązania? – Andyrooger
Zobacz także: https://fluentbytes.com/how-to-prevent-codedui-tests-from-breaking-angular-ajax-calls/. – Appulus
Działa dla jquery 2.0.0, ale nie dla wersji 2.0.2 –
Witamy w StackOverflow! Bardziej pomocne jest opublikowanie odpowiedniego kodu wraz z wyjaśnieniem, co i jak * dokładnie * zrywa. –
Mogę dodać, że każda akcja użytkownika na stronie dzieli sukces $ .ajax i jest dostępna tylko w jQuery 2.0. –