Xcode 11 XCUITest Không thể nhận được ảnh chụp nhanh phù hợp: Lỗi khi nhận cửa sổ chính kAXErrorServerNotFound


21

Sau khi xây dựng ứng dụng của tôi trong Xcode 11 và chạy bộ XCUITests của tôi, tôi gặp nhiều lỗi ngẫu nhiên sau đây.

Không thể nhận được ảnh chụp nhanh phù hợp: Lỗi khi nhận cửa sổ chính kAXErrorServerNotFound

Cho dù tôi tăng thời gian chờ bao lâu thì các vấn đề vẫn xuất hiện không liên tục. Dường như có vấn đề Chụp nhanh hệ thống phân cấp UI. Các thử nghiệm của chúng tôi vượt qua nhất quán trong Xcode 10.

Tôi đã cài đặt lại Xcode. Đã xóa tất cả các trình giả lập. Xóa dữ liệu dẫn xuất. Thời gian chờ sửa đổi. Nâng cấp từ Xcode 11.1 lên Xcode 11.2.1.

Cảm ơn!

 


ngay cả tôi đang đối mặt với cùng một vấn đề, bạn có nhận được cách giải quyết nào cho cùng không.
Samarth Kejriwal

Câu trả lời:


9

Tôi gặp vấn đề với việc khớp trong khi tôi đang chạy UITest đơn giản trong Xcode 11.3. Để làm cho nó hoạt động đầu tiên tôi phải dán: XCUIApplication().activate()hoặc XCUIApplication().launch().


Điều này hoạt động .. cảm ơn bạn
RJ168

Câu trả lời này có vẻ là cách để đi nhưng đang có vấn đề hiểu ý nghĩa của nó? Tôi nên nhập XCUIApplication (). Kích hoạt () và / hoặc XCUIApplication (). Launch () ở đâu?
Charlie Seligman

Bên trong chức năng kiểm tra ui của bạn
Đăng ký vào

0

Tôi đã gặp vấn đề tương tự với Xcode 11 và nhận ra rằng người chạy thử nghiệm không bị giết khi dừng các bài kiểm tra (hoặc nếu thử nghiệm bị lỗi vì một số lý do). Chạy thử nghiệm lần thứ hai sẽ sinh ra một người chạy thử nghiệm mới và tại thời điểm đó, tôi có hai người chạy thử tương tác với cùng một ứng dụng, dẫn đến lỗi rất lạ này.

Để chứng minh rằng tôi đã làm như sau:

  1. Tạo một bài kiểm tra giao diện người dùng gõ một văn bản dài trong chế độ xem văn bản
  2. Chạy thử nghiệm và tự dừng nó khi có một vài câu trong chế độ xem văn bản
  3. Tự mở ứng dụng trong trình giả lập (không phải bằng cách chạy thử)
  4. Quan sát thấy rằng các ký tự ngẫu nhiên đã xuất hiện trong chế độ xem văn bản, mặc dù không có thử nghiệm nào đang chạy.

Cách giải quyết là bỏ và mở lại trình giả lập để đảm bảo tất cả các quy trình sẽ bị giết. Hy vọng điều này giải quyết vấn đề của bạn


Cảm ơn vì sự sáng suốt! Bây giờ bạn nói điều này phù hợp với những gì tôi đã quan sát. Thật không may, như tôi đã nói trong bài viết gốc của mình, tôi đã thử xóa tất cả các trình giả lập. Các thử nghiệm này được chạy như một phần của các bản dựng của chúng tôi cả cục bộ và trên hệ thống CI của chúng tôi. Bạn có biết cách nào để tự động hóa quá trình này?
Phố Luke

I Những gì chúng tôi đã làm trên hệ thống CI của chúng tôi rõ ràng đã giết chết Trình mô phỏng trước khi chạy bộ thử nghiệm. Ví dụ killall "Simulator" 2> /dev/null; xcrun simctl erase all, bạn có thể chạy hoặc nếu bạn sử dụng fastlane, có các tùy chọn trong quá trình quét để đặt lại trình giả lập.
erudel

0

Tôi sử dụng các máy khác nhau. Máy Mac cũ của tôi gặp lỗi này thường xuyên hơn. Tôi đoán là các máy Mac cũ hơn không có bộ nhớ cần thiết để chạy một số XCUITests chính xác.


0

Tôi gặp vấn đề theo thời gian trong Xcode 11.1. Tôi đã quan sát thấy rằng vấn đề xảy ra khi chờ đợi các yếu tố UI đặc biệt là có chế độ xem web được hiển thị trong quá trình thử nghiệm. Khi vấn đề xảy ra tôi đã sử dụng XCUIElement.waitForExistence(timeout:)hoặc mong đợi với NSPredicate(format: "exists == true"). Khi tôi thay đổi để sử dụng kỳ vọng với NSPredicate(format: "hittable == true")vấn đề dường như không còn nữa nhưng tôi không biết tại sao. Sự khác biệt giữa 2 thuộc tính là hittablechỉ phát hiện các thành phần trên màn hình trong khi existsphát hiện các thành phần ngoài màn hình, chẳng hạn như các ô ngoài màn hình của chế độ xem bảng.

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

0

Tôi đã có một vấn đề tương tự trên Xcode 11.

Hóa ra trước khi nó được phép có cùng một định danh khả năng truy cập trong nhiều trang.

Nhưng bây giờ bằng cách sử dụng kiểu trình bày phương thức mới, bạn nên sử dụng các số nhận dạng khác nhau trong các trang của mình để tránh xung đột.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.