Xcode 11 XCUITest 일치하는 스냅 샷을 가져 오지 못했습니다. 기본 창을 가져 오는 중 오류가 발생했습니다. kAXErrorServerNotFound


21

Xcode 11에서 내 앱을 빌드하고 XCUITests 제품군을 실행 한 후 다음과 같은 많은 오류가 발생합니다.

일치하는 스냅 샷을 가져 오지 못했습니다 : 주 창 kAXErrorServerNotFound를 가져 오는 중 오류가 발생했습니다.

시간 초과가 얼마나 길어 지더라도 문제가 간헐적으로 나타납니다. UI 계층 구조 스냅 샷에 문제가있는 것 같습니다. 우리의 테스트는 Xcode 10에서 일관되게 통과합니다.

Xcode를 다시 설치했습니다. 모든 시뮬레이터를 삭제했습니다. 파생 데이터를 지 웁니다. 수정 된 시간 초과. Xcode 11.1에서 Xcode 11.2.1로 업그레이드되었습니다.

감사!

 


심지어 같은 문제에 직면하고 있습니다. 동일한 해결 방법을 얻었습니까?
Samarth Kejriwal

답변:


9

Xcode 11.3에서 간단한 UITest를 실행하는 동안 일치하는 데 문제가있었습니다. 제대로 작동 시키려면 먼저 붙여 넣어야했습니다. XCUIApplication().activate()또는 XCUIApplication().launch().


감사합니다
RJ168

이 답변은 갈 길이지만 그것이 무엇을 의미하는지 이해하는 데 문제가 있습니까? XCUIApplication (). activiate () 및 / 또는 XCUIApplication (). launch ()를 어디에 입력해야합니까?
Charlie Seligman

UI 테스트 기능 내부
Денис Грищенко

0

Xcode 11과 동일한 문제가 발생하여 테스트를 중지 할 때 (또는 어떤 이유로 테스트가 중단 된 경우) 테스트 러너가 종료되지 않는다는 것을 깨달았습니다. 테스트를 두 번 실행하면 새로운 테스트 러너가 생성되고 그 시점에서 두 명의 러너가 동일한 응용 프로그램과 상호 작용하려고 시도하여 매우 이상한 오류가 발생했습니다.

내가 다음을 수행했음을 증명하기 위해 :

  1. 텍스트보기에 긴 텍스트를 입력하는 UI 테스트를 만들었습니다.
  2. 텍스트보기에 몇 개의 문장이있을 때 테스트를 실행하고 수동으로 테스트를 중지했습니다.
  3. 시뮬레이터에서 앱을 수동으로 열었습니다 (테스트를 실행하지 않음)
  4. 테스트가 실행되고 있지 않더라도 텍스트보기에 임의의 문자가 나타나는 것을 관찰했습니다.

해결 방법은 시뮬레이터를 종료했다가 다시 열어 모든 프로세스가 종료되도록하는 것입니다. 이것이 문제를 해결하기를 바랍니다.


통찰력에 감사드립니다! 이제 내가 말한 것과 일치하는 것을 말합니다. 불행히도 원래 게시물에서 말했듯이 이미 모든 시뮬레이터를 삭제하려고 시도했습니다. 이 테스트는 로컬 및 CI 시스템 모두에서 빌드의 일부로 실행됩니다. 어쨌든이 프로세스를 자동화해야한다는 것을 알고 있습니까?
Luke Street

CI 시스템에서 수행 한 작업은 테스트 스위트를 실행하기 전에 시뮬레이터를 명시 적으로 종료하는 것입니다. 예를 들어 run killall "Simulator" 2> /dev/null; xcrun simctl erase all을 사용하거나 fastlane을 사용하는 경우 스캔 옵션을 사용하여 시뮬레이터를 재설정 할 수 있습니다.
erudel

0

나는 다른 기계를 사용합니다. 구형 Mac에서는이 오류가 훨씬 더 자주 발생합니다. 내 생각에 구형 Mac에는 특정 XCUITest를 올바르게 실행하는 데 필요한 메모리가 없습니다.


0

Xcode 11.1에서 때때로 문제를 해결합니다. UI 요소를 기다릴 때 특히 테스트 중에 웹보기가 표시되는 문제가 발생했습니다. 문제가 발생했을 때 XCUIElement.waitForExistence(timeout:)와 함께 사용 하거나 기대하고 NSPredicate(format: "exists == true")있었습니다. NSPredicate(format: "hittable == true")문제 와 함께 기대를 사용하기로 변경했을 때 사라진 것처럼 보이지만 이유를 모르겠습니다. 두 속성의 차이점은 hittable화면 요소 만 감지 exists하고 테이블보기의 화면 외부 셀과 같은 화면 외 요소는 감지한다는 것입니다.

expectation(for: NSPredicate(format: "hittable == true"), evaluateWith: element, handler: nil)
waitForExpectations(timeout: 60, handler: nil)

0

Xcode 11에서도 비슷한 문제가 발생했습니다.

많은 페이지에서 동일한 접근성 식별자를 가질 수 있기 전에 밝혀졌습니다.

그러나 이제 새로운 모달 프레젠테이션 스타일을 사용하면 충돌을 피하기 위해 페이지 내에서 다른 식별자를 사용해야합니다.

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