ความสำเร็จของ Jquery AJAX ไม่ได้รับการกระตุ้นด้วยโครงการทดสอบ Coded UI

ฉันกำลังพยายามเรียกใช้โครงการทดสอบ Coded-UI บนแอปพลิเคชัน asp.net MVC4 แอปพลิเคชันประกอบด้วยการโทร ajax ต่างๆ ที่เกี่ยวข้อง เมื่อฉันทดสอบด้วยตนเอง มันทำงานได้ดี แต่เมื่อฉันทดสอบโดยใช้โปรเจ็กต์ทดสอบ coded-ui มันพังเพราะในการเรียก ajax ฟังก์ชันการเรียกกลับไม่ได้รับการเรียก ใครช่วยบอกฉันว่าฉันคิดถึงอะไรที่นี่? ขอบคุณล่วงหน้า.


person user2617088    schedule 25.07.2013    source แหล่งที่มา
comment
ยินดีต้อนรับสู่ StackOverflow! จะมีประโยชน์มากกว่าหากคุณโพสต์โค้ดที่เกี่ยวข้อง พร้อมด้วยคำอธิบายว่า ตรงที่สุด เสียหายอย่างไรและอย่างไร   -  person Arman H    schedule 25.07.2013
comment
ฉันสามารถเพิ่มได้ว่าการกระทำของผู้ใช้ใด ๆ ในหน้าแบ่ง $.ajax สำเร็จและเป็นใน jQuery 2.0 เท่านั้น   -  person Denis Agarev    schedule 23.08.2013


คำตอบ (1)


เกิดอะไรขึ้น

เบราว์เซอร์ Coded UI ของ Microsoft แทรกจาวาสคริปต์เพื่อชิมวัตถุ XMLHttpRequest สำหรับการติดตาม การเรียก ajax ใดๆ ในเพจจะใช้ shim นี้แทน XMLHttpRequest จริง ชิมจะถือว่าการเรียกกลับที่เสร็จสมบูรณ์ของคุณแนบอยู่กับคุณสมบัติ onreadystatechange ของ XMLHttpRequest แต่ 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 จะหยุด Coded UI WebBrowser ไม่ให้ฉีดจาวาสคริปต์เพื่อติดตามการโทร ajax และตัวจับเวลา jQuery จะได้รับ XMLHttpRequest จริง และการเรียกกลับ ajax ของคุณจะทำงานอีกครั้ง

person Ross McNab    schedule 27.01.2014
comment
เครื่องช่วยชีวิต ฉันพบข้อมูลเพียงเล็กน้อยเกี่ยวกับเรื่องนี้จากเว็บ คุณมีข้อมูลอ้างอิงสำหรับปัญหาหรือวิธีแก้ไขหรือไม่ - person Andyrooger; 14.12.2015
comment
ดูเพิ่มเติมที่: fluentbytes.com/ - person Appulus; 09.02.2016