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.