ฉันกำลังพยายามสร้าง UItest ใน Xcode เมื่อฉันพยายามปัด UIview ฉันได้รับข้อผิดพลาด:
Timestamped Event Matching Error: Failed to find matching element
สิ่งนี้จะเกิดขึ้นหากฉันพยายามแตะ UIView
ฉันกำลังพยายามสร้าง UItest ใน Xcode เมื่อฉันพยายามปัด UIview ฉันได้รับข้อผิดพลาด:
Timestamped Event Matching Error: Failed to find matching element
สิ่งนี้จะเกิดขึ้นหากฉันพยายามแตะ UIView
คำตอบ:
fastlane
เพื่อถ่ายภาพหน้าจอของ tableView stackoverflow.com/a/39331154/4475605
isAccessibilityElement = true
โดยปกติปัญหานี้จะพบเมื่อองค์ประกอบหลักขององค์ประกอบที่คุณต้องการบันทึกถูกตั้งค่าเป็น isAccessibilityElement = true โดยทั่วไปคุณต้องตั้งค่าองค์ประกอบหลักเป็นเท็จเพื่อเข้าถึงองค์ประกอบลูก ตัวอย่างเช่นหากคุณมี UILabel ในมุมมองการช่วยสำหรับการเข้าถึงควรตั้งค่าเป็น false สำหรับมุมมองและตั้งค่าเป็น true สำหรับ UILabel
ใน Xcode 9.3 ซึ่งเห็นได้ชัดว่ายังคงเป็นปัญหาสิ่งที่ฉันทำคือ:
สำหรับการบันทึกการทดสอบใหม่ฉันคิดว่ายังไม่มีวิธีแก้ไข แต่ถ้าคุณใช้ส่วนขยายที่บังคับให้แตะด้วยการทดสอบที่มีอยู่แล้วก็ใช้ได้
ตัวอย่างการใช้งาน:
extension XCUIElement {
func forceTapElement() {
if self.hittable {
self.tap()
}
else {
let coordinate: XCUICoordinate = self.coordinateWithNormalizedOffset(CGVectorMake(0.0, 0.0))
coordinate.tap()
}
}
}
func testSomethingWithCells() {
let app = XCUIApplication()
let cells = app.tables.cells
sleep(1)
cells.elementBoundByIndex(0).forceTapElement()
}
คุณสามารถตรวจสอบโพสต์ต้นฉบับได้ที่นี่:
ฉันพบปัญหานี้เป็นครั้งคราว การลบไดเรกทอรีของแอปจาก DerivedData ดูเหมือนจะช่วยได้
วิธีแก้ปัญหาที่ได้ผลสำหรับตัวเองคือการระบุวัตถุให้แตกต่างกัน
ใน Xcode 8 ฉันสามารถใช้สิ่งต่อไปนี้:
XCUIApplication().tables.cells["Camera Roll"].buttons["Camera Roll"].tap()
ด้วย Xcode 9 ฉันได้รับข้อผิดพลาดที่กล่าวถึงในคำถามนี้ ลงเอยด้วยการใช้สิ่งต่อไปนี้ซึ่งใช้งานได้ (แต่จะมีความละเอียดมากกว่าตัวเลือกเดิม)
XCUIApplication().cells.element(boundBy: 1).tap()