2015-07-06 17 views
10

Mam zmienną typu .Image i klasy XCUIElement. Coś takiego:XCUIElement - Uzyskaj wartość obrazu

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

Czy istnieje sposób można wyodrębnić rzeczywisty obraz, więc mogę porównać go do innego obrazu?

Próbowałem dokonać kalibracji metody value, ale zwraca ciąg znaków. Przesyłanie go do UIImage zawsze kończy się niepowodzeniem.

Odpowiedz

15

Niedawno rozmawiałem na ten temat z ewangelistą Apple Developer Tools. Obecnie nie ma dostępu do rzeczywistego obrazu z widoku obrazu, przycisku itp. Podobnie, nie ma możliwości uzyskania dostępu do innych właściwości widoków, które mogą być interesujące, takich jak "isHidden" lub "attributedText" itp. powiedział, że inżynierowie z zespołu testującego interfejs użytkownika są zainteresowani przypadkami użycia, do których ludzie chcą uzyskać dostęp do tych właściwości, więc byłoby to bardzo pomocne - zarówno dla nich, jak i dla innych osób, które chcą tej funkcji - gdyby złożyć zgłoszenie błędu/żądanie funkcji z prośbą o to pod adresem https://bugreport.apple.com

Jako wskazówkę dotyczącą właściwości "wartość" w XCUIElement, przynajmniej na razie wygląda to jak mapowanie do właściwości "accessibilityValue" dowolnego widoku, do którego odwołuje się XCUIElement . Jeśli więc ustawisz wartość widoczności widoku, który chcesz, aby zawierał pewne informacje, które chcesz zweryfikować, może to pomóc w testowaniu. Należy jednak pamiętać o dwóch rzeczach:

1) Mimo że właściwość "wartość" XCUIElement ma typ "id", typem właściwości accessibilityValue jest "NSString". Nie wiem, co by się stało, gdybyś próbował wymusić jakąś wartość nie będącą ciągiem znaków (jak obraz) na wartość accessibilityValue, a następnie spróbował pobrać ją z właściwości "value" XCUIElement, ale podejrzewam, że nie działałaby dobrze. Częściowo dlatego, że:

2) Właściwość accessVallue widoku jest używana przez funkcję VoiceOver firmy Apple dla osób niedowidzących. Po ustawieniu tej wartości zostanie odczytany na głos, gdy użytkownik dotknie tego elementu (dlatego powinien być ciągiem znaków).

I objęte również problem z nie jest w stanie uzyskać dostęp do właściwości widoku poprzez XCUIElement bardziej szczegółowo tutaj: http://www.danielhall.io/exploring-the-new-ui-testing-features-of-xcode-7

+0

To dość dużo podsumowuje granice ramach testów UI już teraz? Czy użyłeś go w realnym świecie, aby dostarczyć jakiejkolwiek wartości? – Petar

+2

@Petar Tak, limity/nieobsługiwane przypadki wydają się przewyższać liczbę obsługiwanych przypadków dla mnie obecnie. Sądzę, że fundamentalne podejście polegające na udostępnianiu informacji w sposób "widoczny dla użytkownika końcowego" jest dobre pod wieloma względami, ale bardzo utrudnia uzyskanie dostępu do UIImage. Jeśli chodzi o mnie, użyłem go do napisania testów, które mają wartość, ale ostatecznie muszę trzymać się KIF lub Calabash, ponieważ jest zbyt wiele testów, których nie można zapisać przy pomocy Xcode UITesting, i jestem nie jestem pewien, czy warto zainstalować i utrzymywać 2 różne ramy UITesting. –

+0

Tak, dokładnie. Próbowałem wykonać bardzo prosty test, aby sprawdzić, czy UIButton ma "wybrane == TAK" ... i wkrótce zdałem sobie sprawę, że nie jestem w stanie tego zrobić. Następnie chciałem zrobić test, aby zobaczyć, czy mój ViewController wyświetlił odpowiedni widok (ponieważ mogę przełączać się między kilkoma) - znowu nie jest to możliwe. Hope Apple posortuj to, ponieważ ramy, o których wspomniałeś w swoim artykule, wydają się obiecujące. Czy mogę zapytać, jak dokładnie używasz Tykwa do testów interfejsu użytkownika?Dzięki – Petar