2015-07-06 17 views
10

Tôi có một biến là loại .Image và lớp XCUIElement. Một cái gì đó như thế này:XCUIElement - Lấy giá trị Hình ảnh

var image = app.descendantsMatchingType(.Image).elementAtIndex(0)

Có cách nào tôi có thể trích xuất các hình ảnh thực tế để tôi có thể so sánh nó với hình ảnh khác?

Tôi đã thử phương pháp value, nhưng nó trả về một chuỗi. Đúc nó vào một UIImage luôn thất bại.

Trả lời

15

Gần đây tôi đã có cuộc trò chuyện về điều này với nhà truyền giáo Công cụ dành cho nhà phát triển Apple. Hiện tại không có cách nào để truy cập hình ảnh thực tế từ một hình ảnh, nút, vv Tương tự, không có cách nào để truy cập các thuộc tính khác của các chế độ xem có thể quan tâm, như "isHidden" hoặc "attributedText", v.v. nói rằng các kỹ sư trong nhóm Kiểm tra giao diện người dùng quan tâm đến các trường hợp sử dụng mà mọi người muốn truy cập vào các thuộc tính này, vì vậy sẽ rất hữu ích - cả cho họ và cho những người khác muốn tính năng này - nếu bạn nộp báo cáo lỗi/yêu cầu tính năng yêu cầu tại số https://bugreport.apple.com

Là một mẹo liên quan đến thuộc tính "giá trị" trên XCUIElement, ít nhất là bây giờ điều này dường như ánh xạ tới thuộc tính "accessibilityValue" của bất kỳ chế độ xem nào mà XCUIElement đang tham chiếu . Vì vậy, nếu bạn đặt khả năng truy cập đóGiá trị của một chế độ xem bạn quan tâm để chứa một số thông tin bạn quan tâm trong việc xác minh, thì điều này có thể giúp kiểm tra. Tuy nhiên, hai điều cần lưu ý:

1) Mặc dù thuộc tính "giá trị" của XCUIElement thuộc loại "id", loại thuộc tính accessibilityValue là "NSString". Tôi không biết điều gì sẽ xảy ra nếu bạn cố gắng buộc một số giá trị không phải chuỗi (như hình ảnh) vào AccessibilityValue và sau đó cố gắng lấy nó từ thuộc tính "value" của XCUIElement, nhưng tôi nghi ngờ nó sẽ không hoạt động tốt. Một phần vì:

2) Tính năng truy cậpTính năng giá trị của chế độ xem thực sự được sử dụng bởi tính năng VoiceOver của Apple cho người khiếm thị. Khi giá trị được đặt, nó sẽ được đọc to khi người dùng chạm vào phần tử đó (đó là lý do tại sao nó được coi là một chuỗi).

Tôi cũng đề cập vấn đề này với việc không thể truy cập vào tính chất của cái nhìn qua XCUIElement chi tiết hơn ở đây: http://www.danielhall.io/exploring-the-new-ui-testing-features-of-xcode-7

+0

này khá nhiều tóm tắt các giới hạn của khuôn khổ thử nghiệm giao diện người dùng như bây giờ? Bạn đã sử dụng nó trong thế giới thực để thực tế cung cấp bất kỳ giá trị? – Petar

+2

@Petar Vâng, giới hạn/trường hợp không được hỗ trợ dường như lớn hơn số lượng các trường hợp được hỗ trợ cho tôi hiện tại. Tôi nghĩ rằng cách tiếp cận cơ bản sử dụng khả năng truy cập để hiển thị thông tin "cách nó xuất hiện cho người dùng cuối" là tốt theo nhiều cách, nhưng làm cho những thứ như truy cập vào UIImage rất khó khăn. Đối với tôi, tôi đã sử dụng nó để viết một số bài kiểm tra có giá trị, nhưng cuối cùng, tôi phải gắn bó với KIF hoặc Calabash vì có quá nhiều bài kiểm tra không thể viết bằng Xcode UITesting, và tôi không chắc rằng nó có giá trị để có 2 khung công tác UITesting khác nhau được cài đặt và duy trì. –

+0

Đúng vậy. Tôi đã thử làm một bài kiểm tra rất đơn giản để kiểm tra xem UIButton có 'select == YES' ... và chẳng bao lâu tôi nhận ra rằng tôi không thể làm được. Sau đó, tôi muốn thực hiện một thử nghiệm để xem nếu ViewController của tôi đã hiển thị xem có liên quan (kể từ khi tôi có thể chuyển đổi giữa một số ít) - một lần nữa không thể. Hy vọng Apple sắp xếp này ra như là khuôn khổ như bạn đã đề cập trong bài viết của bạn có vẻ đầy hứa hẹn. Tôi có thể hỏi bạn chính xác bạn đang sử dụng Calabash cho các bài kiểm tra UI không?Cảm ơn – Petar

Các vấn đề liên quan