Lỗi đối sánh sự kiện có dấu thời gian: Không tìm thấy phần tử phù hợp


93

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

cửa sổ lỗi

nhập mô tả hình ảnh ở đây

Điều này cũng xảy ra nếu tôi cố gắng nhấn vào UIView.


Bạn có thể giải thích thêm một chút không?
Dieter Meemken

tôi cố gắng vuốt hoặc chạm vào UIview giả sử làm gì đó (có trình phục hồi cử chỉ) nhưng khi tôi thực hiện cử chỉ, lỗi này xảy ra. cách duy nhất tôi mannged để làm cho nó làm việc là với các truy vấn nhưng nó thực sự phức tạp và im chắc chắn rằng có một cách khác

Câu trả lời:


47

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ụ:

nhập mô tả hình ảnh ở đây


1
Việc bật Trợ năng cho WebView đã khiến các thử nghiệm của tôi không thành công khi phân giải văn bản trong WebView. Việc TẮT Trợ năng cho UIView lưu trữ WebView đã thực hiện các thử nghiệm thành công. Cẩn thận.
askielboe

1
Như một điểm khác để làm cho nó hoạt động đối với tôi, tôi phải gắn nhãn cho nó
Sean Lintern

Tôi thấy bài đăng này hữu ích trong việc sử dụng fastlaneđể chụp ảnh màn hình của tableView. stackoverflow.com/a/39331154/4475605
Adrian

Đây là đâu? Làm cách nào để thiết lập điều này?
Cory McAboy

@CoryMcAboy bạn có thể đặt nó từ mã cho chế độ xem tùy chỉnh của mình:isAccessibilityElement = true
Gleb Tarasov

14

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.


1
Điều này chính xác có thể tái tạo. Như bạn đã nói, phần tử mẹ không hoạt động được đặt thành isAccessibilityElement = true! Sau khi tôi chuyển nó trở lại false, nó hoạt động trở lại.
pommes

3

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à:

  • Thoát Xcode
  • Đặt lại cài đặt của Trình mô phỏng (Phần cứng -> Xóa tất cả nội dung và cài đặt)
  • Thoát Trình mô phỏng
  • Xóa dữ liệu bắt nguồn cho ứng dụng hiện tại
  • Khởi động lại Xcode
  • Hãy thử ghi lại - lần này nó hoạt động với tôi.

Tôi đã cung cấp nhận dạng là "skipButton" cho một nút và nút xác định, nó luôn luôn sử dụng để thất bại, tôi xác định các nút như app.buttons [ "skipButton '], đánh giá cao sự giúp đỡ của bạn
Sujit Baranwal

Các bước này không hiệu quả với tôi. Trên thực tế, các vật dụng không bị ảnh hưởng bởi sự cố trước đó đã bị ảnh hưởng.
Geoff S,

tại sao điều này không có nội dung?
quạ

2

Đố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:

Kiểm tra giao diện người dùng Xcode - Không thể kiểm tra giao diện người dùng - Không thể cuộn đến hiển thị (bằng hành động AX) khi chạm vào trường Tìm kiếm nút "Hủy"


elementBoundByIndex 'đã được đổi tên thành' element (bindBy :) ', vd: cells.element (bindBy: 0) .tap ()
Sujananth Ngày

2

Tôi thỉnh thoảng gặp phải vấn đề này. Xóa thư mục của ứng dụng khỏi DerivedData có vẻ hữu ích.


1

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()

@Developer in your test function
Huy-Anh Hoang
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.