Xcode 11 XCUITest ไม่สามารถรับภาพรวมที่ตรงกัน: เกิดข้อผิดพลาดในการรับหน้าต่างหลัก kAXErrorServerNotFound


21

หลังจากสร้างแอปของฉันใน Xcode 11 และใช้งานชุดของ XCUITEST ฉันได้รับความล้มเหลวแบบสุ่มหลายประการด้วยกันดังนี้

ไม่สามารถรับสแนปชอตที่ตรงกัน: เกิดข้อผิดพลาดในการรับหน้าต่างหลัก kAXErrorServerNotFound

ไม่ว่าฉันจะเพิ่มระยะหมดเวลานานเท่าใดปัญหาจะปรากฏขึ้นเป็นระยะ ๆ ดูเหมือนว่าจะมีปัญหา Snapshotting ลำดับชั้นของ UI การทดสอบของเราผ่านอย่างสม่ำเสมอใน Xcode 10

ฉันติดตั้ง Xcode แล้ว ลบตัวจำลองทั้งหมด ล้างข้อมูลที่ได้รับแล้ว แก้ไขการหมดเวลา อัปเกรดจาก Xcode 11.1 เป็น Xcode 11.2.1

ขอบคุณ!

 


แม้ฉันกำลังเผชิญกับปัญหาเดียวกันคุณได้รับการแก้ไขใด ๆ สำหรับเดียวกัน
Samarth Kejriwal

คำตอบ:


9

ฉันมีปัญหากับการจับคู่ในขณะที่ฉันใช้ UITest ง่าย ๆ ใน Xcode 11.3 เพื่อให้การทำงานผมต้องวางในตอนแรก: หรือXCUIApplication().activate()XCUIApplication().launch()


ได้ผล .. ขอบคุณ
RJ168

คำตอบนี้ดูเหมือนจะเป็นหนทางไป แต่มีปัญหาในการทำความเข้าใจว่ามันหมายถึงอะไร? ฉันควรพิมพ์ XCUIApplication (). activiate () และ / หรือ XCUIApplication (). launch () ได้อย่างไร
Charlie Seligman

ฟังก์ชั่นการทดสอบภายในของคุณ UI
ДенисГрищенко

0

ฉันเคยประสบปัญหาเดียวกันกับ Xcode 11 และตระหนักว่าผู้ทดสอบไม่ได้ถูกฆ่าเมื่อหยุดการทดสอบ (หรือถ้าการทดสอบล้มเหลวด้วยเหตุผลบางอย่าง) การรันการทดสอบเป็นครั้งที่สองจะวางไข่นักทดสอบใหม่และ ณ จุดนั้นฉันมีนักวิ่งสองคนที่พยายามโต้ตอบกับแอปพลิเคชันเดียวกันทำให้เกิดข้อผิดพลาดที่แปลกมากนี้

เพื่อพิสูจน์ว่าฉันได้ทำสิ่งต่อไปนี้:

  1. สร้างการทดสอบ UI ที่พิมพ์ข้อความยาว ๆ ในมุมมองข้อความ
  2. เรียกใช้การทดสอบและหยุดด้วยตนเองเมื่อมีประโยคไม่กี่ประโยคในมุมมองข้อความ
  3. เปิดแอปด้วยตนเองในตัวจำลอง (ไม่ใช่โดยการรันการทดสอบ)
  4. สังเกตว่าตัวอักษรแบบสุ่มปรากฏขึ้นในมุมมองข้อความแม้ว่าจะยังไม่มีการทดสอบก็ตาม

วิธีแก้ปัญหาคือออกจากและเปิดตัวจำลองอีกครั้งเพื่อให้แน่ใจว่ากระบวนการทั้งหมดได้รับการฆ่า หวังว่านี่จะช่วยแก้ปัญหาของคุณได้


ขอบคุณสำหรับความเข้าใจ! ตอนนี้คุณพูดแบบนี้ที่สอดคล้องกับสิ่งที่ฉันสังเกต น่าเสียดายที่ฉันพูดในโพสต์ดั้งเดิมของฉันฉันได้ลองลบตัวจำลองทั้งหมดแล้ว การทดสอบเหล่านี้ดำเนินการโดยเป็นส่วนหนึ่งของงานสร้างของเราทั้งในระดับท้องถิ่นและในระบบ CI ของเรา คุณรู้หรือไม่ว่าจะทำให้กระบวนการนี้เป็นแบบอัตโนมัติ
ถนนลุค

ฉันสิ่งที่เราทำลงไปในระบบ CI ของเราคือการฆ่า Simulator ก่อนที่จะรันชุดทดสอบ ตัวอย่างเช่นคุณสามารถเรียกใช้killall "Simulator" 2> /dev/null; xcrun simctl erase allหรือถ้าคุณใช้ fastlane มีตัวเลือกในการสแกนเพื่อรีเซ็ตตัวจำลอง
erudel

0

ฉันใช้เครื่องอื่น Mac ที่เก่ากว่าของฉันพบข้อผิดพลาดนี้บ่อยกว่า ฉันเดาว่า mac ที่เก่ากว่านั้นไม่มีหน่วยความจำที่จำเป็นในการเรียกใช้ XCUIT บางอย่างถูกต้อง


0

ฉันพบปัญหาใน Xcode 11.1 เป็นครั้งคราว ฉันสังเกตว่าปัญหานี้เกิดขึ้นเมื่อรอองค์ประกอบของ UI โดยเฉพาะอย่างยิ่งมีการแสดงมุมมองเว็บในระหว่างการทดสอบ เมื่อปัญหาที่เกิดขึ้นผมใช้หรือความคาดหวังกับXCUIElement.waitForExistence(timeout:) NSPredicate(format: "exists == true")เมื่อฉันเปลี่ยนไปใช้ความคาดหวังกับNSPredicate(format: "hittable == true")ปัญหาดูเหมือนว่าจะหายไป แต่ฉันไม่รู้ว่าทำไม ความแตกต่างระหว่าง 2 คุณลักษณะคือการhittableตรวจจับองค์ประกอบบนหน้าจอเท่านั้นในขณะที่existsตรวจจับองค์ประกอบนอกหน้าจอเช่นเซลล์นอกหน้าจอของมุมมองตาราง

expectation(for: NSPredicate(format: "hittable == true"), evaluateWith: element, handler: nil)
waitForExpectations(timeout: 60, handler: nil)

0

ฉันมีปัญหาที่คล้ายกันใน Xcode 11

ปรากฎว่าก่อนที่จะได้รับอนุญาตให้มีตัวระบุการเข้าถึงเหมือนกันในหลาย ๆ หน้า

แต่ตอนนี้ใช้รูปแบบการนำเสนอเป็นกิริยาช่วยใหม่คุณควรใช้ตัวระบุที่แตกต่างกันภายในหน้าของคุณเพื่อหลีกเลี่ยงความขัดแย้ง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.