Timestamped Event Matching Error: Failed to find matching element

独自空忆成欢 提交于 2019-11-29 04:19:23

问题


I'm trying to generate a UItest in Xcode. When I try to swipe UIview I get an error:

Timestamped Event Matching Error: Failed to find matching element

error window

This also happens if I try to tap UIView.


回答1:


You should verify that the 'Accessibility' option is enabled for the UIView object you are swiping from, for example:




回答2:


Usually this issue is observed when the parent element of the element yo want to record is set to isAccessibilityElement=true. In general, you have to have the parent element set to false to access the child element. For example: if you have a UILabel inside a view, the accessibility should be set to false for the view and set to true for the UILabel.




回答3:


In Xcode 9.3, where this is apparently still a problem, what I did was:

  • Quit Xcode
  • Reset the Simulator's settings (Hardware -> Erase all contents and settings)
  • Quit the Simulator
  • Delete the derived data for the current app
  • Restart Xcode
  • Try recording again - it worked this time for me.



回答4:


For recording a new test, I don't think there's a solution yet. But, if you use an extension forcing tap with a test that already exists, works.

Example of use:

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

You can check the original post here:

Xcode UI test - UI Testing Failure - Failed to scroll to visible (by AX action) when tap on Search field "Cancel' button




回答5:


I've been occasionally running into this problem. Delete the app's directory from DerivedData seems to help.




回答6:


A solution that worked for myself was to identify the object differently.
In Xcode 8 I was able to use the following:

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

With Xcode 9 I got the error mentioned in this question. Ended up using the following, which worked (al beit more flakey than the original option)

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


来源:https://stackoverflow.com/questions/36616891/timestamped-event-matching-error-failed-to-find-matching-element

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!