11

我想在asp.net MVC4應用程序上運行Coded-UI測試項目。 該應用程序包含涉及的各種ajax調用。 當我手動測試它時,它工作正常,但是當我通過使用coded-ui測試項目進行測試時, 因爲在ajax調用中,回調函數不會被調用。 有人可以告訴我我在這裏失蹤了什麼? 在此先感謝。jquery AJAX成功沒有被編碼的​​UI測試項目觸發

+0

歡迎來到StackOverflow!如果你發佈了相關的代碼,以及解釋什麼和如何*正確*它會更有幫助。 –

+0

我可以補充說,頁面上的任何用戶動作都會打破$ .ajax成功,並且只能在jQuery 2.0上執行。 –

回答

19

什麼錯誤

微軟的編碼用戶界面的瀏覽器的JavaScript注入勻場跟蹤XMLHttpRequest對象。頁面中的任何ajax調用將使用此填充而不是真正的XMLHttpRequest。 shim假定您的完成回調附加到XMLHttpRequest的onreadystatechange屬性,但jQuery 2.0使用新的onload和onerror事件,所以回調永遠不會被shim調用。

解決方法

的解決辦法是添加以下爲測試項目的App.config文件:

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

設置WebWaitForReadyLevel至3個注入站編碼的UI web瀏覽器javascript來跟蹤ajax調用和定時器。 jQuery將得到一個真正的XMLHttpRequest,並且你的ajax回調將再次工作。

+0

拯救生命。我從網上找到關於此的最少信息 - 您是否有任何關於該問題或解決方案的參考? – Andyrooger

+0

另請參閱:https://fluentbytes.com/how-to-prevent-codedui-tests-from-breaking-angular-ajax-calls/。 – Appulus

+0

它適用於jQuery 2.0.0,但不適用於2.0.2 –