Tôi đang cố tạo UItest trong Xcode. Khi tôi cố gắng vuốt UIview, tôi gặp lỗi:
Timestamped Event Matching Error: Failed to find matching element
Điều này cũng xảy ra nếu tôi cố gắng nhấn vào UIView.
Tôi đang cố tạo UItest trong Xcode. Khi tôi cố gắng vuốt UIview, tôi gặp lỗi:
Timestamped Event Matching Error: Failed to find matching element
Điều này cũng xảy ra nếu tôi cố gắng nhấn vào UIView.
Câu trả lời:
Bạn nên xác minh rằng tùy chọn 'Trợ năng' được bật cho đối tượng UIView mà bạn đang vuốt từ đó, ví dụ:
fastlane
để chụp ảnh màn hình của tableView. stackoverflow.com/a/39331154/4475605
isAccessibilityElement = true
Thông thường, vấn đề này được quan sát khi phần tử mẹ của phần tử mà bạn muốn ghi được đặt thành isAccessibilityElement = true. Nói chung, bạn phải đặt phần tử cha thành false để truy cập phần tử con. Ví dụ: nếu bạn có Nhãn UIL bên trong một chế độ xem, khả năng truy cập phải được đặt thành false cho chế độ xem và đặt thành true cho UILabel.
Trong Xcode 9.3, nơi đây dường như vẫn còn là một vấn đề, những gì tôi đã làm là:
Đối với việc ghi lại một bài kiểm tra mới, tôi nghĩ vẫn chưa có giải pháp. Tuy nhiên, nếu bạn sử dụng một tiện ích mở rộng buộc nhấn với một thử nghiệm đã tồn tại, sẽ hoạt động.
Ví dụ sử dụng:
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()
}
Bạn có thể kiểm tra bài viết gốc tại đây:
Một giải pháp hiệu quả cho tôi là xác định đối tượng theo cách khác.
Trong Xcode 8, tôi có thể sử dụng những thứ sau:
XCUIApplication().tables.cells["Camera Roll"].buttons["Camera Roll"].tap()
Với Xcode 9, tôi gặp lỗi được đề cập trong câu hỏi này. Đã kết thúc bằng cách sử dụng cách sau, cách này đã hoạt động (có thể hơi bong tróc hơn so với tùy chọn ban đầu)
XCUIApplication().cells.element(boundBy: 1).tap()