Kesalahan Pencocokan Peristiwa Stempel Waktu: Gagal menemukan elemen yang cocok


94

Saya mencoba untuk menghasilkan UItest di Xcode. Ketika saya mencoba menggesek UIview, saya mendapatkan kesalahan:

Timestamped Event Matching Error: Failed to find matching element

jendela kesalahan

masukkan deskripsi gambar di sini

Ini juga terjadi jika saya mencoba mengetuk UIView.


Bisakah Anda menjelaskan lebih banyak?
— Dieter Meemken

Saya mencoba untuk menggesek atau mengetuk tampilan UI yang seharusnya melakukan sesuatu (memiliki pengenal gerakan) tetapi ketika saya melakukan gerakan kesalahan ini terjadi. satu-satunya cara saya berhasil membuatnya bekerja adalah dengan kueri tetapi ini benar-benar rumit dan saya yakin ada cara lain
— shay

Jawaban:


47

Anda harus memverifikasi bahwa opsi 'Aksesibilitas' diaktifkan untuk objek UIView yang Anda geser, misalnya:

masukkan deskripsi gambar di sini


1
Mengaktifkan Aksesibilitas untuk WebView membuat pengujian saya gagal saat menyelesaikan teks di WebView. MENONAKTIFKAN Aksesibilitas untuk UIView yang menghosting WebView membuat pengujian berhasil. Jadi waspadalah.
— askielboe

1
Sebagai poin lain untuk membuatnya berhasil bagi saya, saya harus memberinya label
— Sean Lintern

Saya menemukan posting ini berguna untuk digunakan fastlaneuntuk mengambil screenshot dari tableView. stackoverflow.com/a/39331154/4475605
— Adrian

Dimana ini? Bagaimana cara mengatur ini?
— Cory McAboy

@CoryMcAboy Anda dapat mengaturnya dari kode untuk tampilan kustom Anda:isAccessibilityElement = true
— Gleb Tarasov

14

Biasanya masalah ini teramati ketika elemen induk dari elemen yang ingin Anda rekam disetel ke isAccessibilityElement = true. Secara umum, Anda harus menyetel elemen induk ke false untuk mengakses elemen anak. Misalnya: jika Anda memiliki UILabel di dalam tampilan, aksesibilitas harus disetel ke false untuk tampilan tersebut dan disetel ke true untuk UILabel.


1
Ini benar-benar dapat direproduksi. Seperti yang Anda katakan itu tidak berfungsi, elemen induk diatur ke isAccessibilityElement = true! Setelah saya mengembalikannya ke false, itu berfungsi lagi.
— Pommes

3

Di Xcode 9.3, di mana ini tampaknya masih menjadi masalah, yang saya lakukan adalah:

  • Keluar dari Xcode
  • Setel ulang pengaturan Simulator (Perangkat Keras -> Hapus semua konten dan pengaturan)
  • Keluar dari Simulator
  • Hapus data yang diturunkan untuk aplikasi saat ini
  • Mulai ulang Xcode
  • Coba rekam lagi - kali ini berhasil untuk saya.

Saya telah memberikan pengenal sebagai "skipButton" untuk tombol dan pada tombol pengidentifikasi, selalu digunakan untuk gagal, saya mengidentifikasi tombol sebagai app.buttons ["skipButton '], menghargai bantuan Anda
— Sujit Baranwal

Langkah-langkah ini tidak berhasil untuk saya. Faktanya, widget yang sebelumnya tidak terpengaruh oleh masalah tersebut menjadi terpengaruh.
— Geoff S

mengapa ini tidak ada isinya?
— gagak

2

Untuk merekam pengujian baru, saya rasa belum ada solusinya. Tapi, jika Anda menggunakan ekstensi yang memaksa ketuk dengan tes yang sudah ada, berfungsi.

Contoh penggunaan:

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

Anda dapat memeriksa postingan aslinya di sini:

Tes Xcode UI - Kegagalan Pengujian UI - Gagal menggulir ke terlihat (dengan aksi AX) saat ketuk tombol "Batal 'di bidang Pencarian


elementBoundByIndex 'telah diganti namanya menjadi' element (boundBy :) ', Misalnya: sel.element (terikatBy: 0) .tap ()
— Sujananth

2

Saya terkadang mengalami masalah ini. Hapus direktori aplikasi dari DerivedData tampaknya membantu.


1

Solusi yang berhasil untuk saya sendiri adalah mengidentifikasi objek secara berbeda.
Di Xcode 8 saya dapat menggunakan yang berikut ini:

XCUIApplication().tables.cells["Camera Roll"].buttons["Camera Roll"].tap()

Dengan Xcode 9 saya mendapatkan kesalahan yang disebutkan dalam pertanyaan ini. Akhirnya menggunakan yang berikut, yang berfungsi (al beit lebih rapuh daripada opsi asli)

XCUIApplication().cells.element(boundBy: 1).tap()

@Pengembang dalam fungsi pengujian Anda
— Huy-Anh Hoang
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.