타임 스탬프 이벤트 일치 오류 : 일치하는 요소를 찾지 못했습니다.


93

Xcode에서 UItest를 생성하려고합니다. UIview를 스 와이프하려고하면 오류가 발생합니다.

Timestamped Event Matching Error: Failed to find matching element

오류 창

여기에 이미지 설명 입력

UIView를 탭하려고 할 때도 발생합니다.


좀 더 설명해 주시겠습니까?
디터 Meemken

나는 무언가를 할 것이라고 가정하는 UIview를 스 와이프하거나 탭하려고 시도하지만 (제스처 재조정 기가 있음) 제스처를 할 때이 오류가 발생합니다. 내가 작동하도록 만드는 유일한 방법은 쿼리를 사용하는 것이지만 정말 복잡하고 다른 방법이 있다고 확신합니다
shay

답변:


47

스 와이프하는 UIView 개체에 대해 '접근성'옵션이 활성화되어 있는지 확인해야합니다. 예를 들면 다음과 같습니다.

여기에 이미지 설명 입력


1
WebView에 대한 접근성을 켜면 WebView에서 텍스트를 확인할 때 테스트가 실패했습니다. WebView를 호스팅하는 UIView에 대한 접근성을 해제하면 테스트가 성공했습니다. 그러니 조심하세요.
askielboe

1
또 다른 점은 나를 위해 그것을 작품을 만들기 위해 나는 그것을 레이블 제공했다
숀 Lintern을

이 게시물 fastlane은 tableView의 스크린 샷을 찍는 데 유용하다는 것을 알았습니다 . stackoverflow.com/a/39331154/4475605
Adrian

이건 어디야? 어떻게 설정합니까?
Cory McAboy

당신은 당신의 사용자 정의보기를 코드에서 설정할 수 있습니다 @CoryMcAboy :isAccessibilityElement = true
에 Gleb Tarasov

14

일반적으로이 문제는 기록하려는 요소의 상위 요소가 isAccessibilityElement = true로 설정된 경우에 발생합니다. 일반적으로 하위 요소에 액세스하려면 상위 요소를 false로 설정해야합니다. 예 : 뷰 내부에 UILabel이있는 경우 접근성은 뷰에 대해 false로 설정되고 UILabel에 대해 true로 설정되어야합니다.


1
이것은 정확하게 재현 가능했습니다. 당신이 말했듯이 부모 요소가 작동하지 않습니다 isAccessibilityElement = true! 다시 거짓으로 바꾼 후 다시 작동했습니다.
pommes

3

이것이 여전히 문제인 Xcode 9.3에서 내가 한 일은 다음과 같습니다.

  • Xcode 종료
  • 시뮬레이터 설정 재설정 (하드웨어-> 모든 내용 및 설정 지우기)
  • 시뮬레이터 종료
  • 현재 앱에 대한 파생 데이터 삭제
  • Xcode 다시 시작
  • 다시 녹음 해보세요. 이번에는 저에게 효과적이었습니다.

나는 버튼에 대해 "skipButton"으로 식별자를 제공했고, 버튼을 식별 할 때 항상 실패하는 데 사용합니다. 버튼을 app.buttons [ "skipButton ']로 식별하고 있습니다. 도움을 주셔서 감사합니다.
Sujit Baranwal

이 단계는 저에게 효과적이지 않았습니다. 실제로 이전에 문제의 영향을받지 않았던 위젯이 영향을 받았습니다.
Geoff S

콘텐츠가없는 이유는 무엇입니까?
crow

2

새로운 테스트를 기록하기 위해 아직 해결책이 없다고 생각합니다. 그러나 이미 존재하는 테스트에 확장 강제 탭을 사용하면 작동합니다.

사용 예 :

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

여기에서 원본 게시물을 확인할 수 있습니다.

Xcode UI 테스트-UI 테스트 실패-검색 필드 "취소"버튼을 탭할 때 표시 (AX 작업에 의해)로 스크롤하지 못했습니다.


elementBoundByIndex '가'element (boundBy :) '로 이름이 변경되었습니다. 예 : cells.element (boundBy : 0) .tap ()
Sujananth

2

나는 때때로이 문제에 부딪쳤다. DerivedData에서 앱의 디렉토리를 삭제하면 도움이 될 것 같습니다.


1

저를 위해 일한 해결책은 물체를 다르게 식별하는 것이 었습니다.
Xcode 8에서는 다음을 사용할 수있었습니다.

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

Xcode 9에서는이 질문에 언급 된 오류가 발생했습니다. 다음을 사용하여 끝났습니다 (원래 옵션보다 결함이 많음)

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

테스트 기능의 @Developer
Huy-Anh Hoang
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.