2015-12-21 19 views
6

Czy można przeprowadzić testy interfejsu użytkownika dla docelowych rozszerzeń działania? Nie mogę utworzyć celu testowego interfejsu użytkownika z rozszerzeniem działania jako "Obiekt do przetestowania". Próbuję załadować Akcja Extension z poziomu Safari (lub zdjęć, chociaż Safari/oba są preferowane)Testowanie rozszerzenia czynności z testami interfejsu użytkownika

Jeśli mogę nagrywać moje interakcje mogę uzyskać miarę:

app.icons["Safari"].tap()

I może wtedy ręcznie dodać:

XCUIDevice.sharedDevice().pressButton(.Home)

przed wygenerowanego kodu, ale to nie działa zgodnie z oczekiwaniami (symulator pozostaje na ekranie głównym).

Próbowałem również:

UIApplication.sharedApplication().openURL(NSURL(string: "https://google.com")!)

ale również nie otworzyć Safari.

Nie jestem nawet pewien, czy będę w stanie współdziałać w trybie automatycznym z rozszerzeniem działania, jeśli zostanie uruchomiony, ale mam nadzieję, że będzie to możliwe.

+0

Czy to szczęście? Próbuję też przetestować przedłużenie działania na interfejsie użytkownika – BHendricks

Odpowiedz

2

Możliwe jest przełączanie aplikacji za pomocą XCUITest, ale jest to nieudokumentowane. Jeśli wyewidencjonujesz Facebook's WebDriverAgent, zrobili zrzut nagłówka i zrobili pomocnika do uruchomienia z trampoliny. Możesz zadzwonić pod numer:

XCUIApplication* safari = [[XCUIApplication alloc] initWithPrivatePath:nil bundleID:@"com.apple.safari"]; 

[safari launch]; 

A potem wejdź w interakcję z Safari tak, jak robisz swoją aplikację. Jednak spotkałem się z podobnym problemem, w którym XCUITest nie uruchomi samego rozszerzenia. Po otwarciu (tzn. Fizycznie dotkniesz przycisku rozszerzenia podczas testu), biegacz testowy działa idealnie i możesz wchodzić w interakcje z twoim rozszerzeniem w tym samym kontekście, co twoja aplikacja. Jednakże, gdy biegacz testowy dotknie, aby uruchomić rozszerzenie, nic nie robi. Dostałem także Apple Dev Forum question poruszający ten temat.

Aktualizacja:

Okazuje się, jeśli używasz aplikacji nacisnąć ekran w miejscu przycisku, rozszerzenie będzie ładować i można komunikować się z nim! Zauważ, że interfejs API do wybierania współrzędnych jest bardzo nieporęczny. X, y są mnożnikami ramki obiektu, z którego utworzono współrzędne. Odpowiedni kod próbki:

// app is your XCUIApplication 
// In this case we are tapping in the horizontal middle and at the y coordinate 603 (this is for a 6+ screen size) 
XCUICoordinate* coordinateOfRowThatLaunchesYourExtension = [app coordinateWithNormalizedOffset:CGVectorMake(0.5, 603.0/736.0)]; 
[coordinateOfRowThatLaunchesYourExtension tap]; 

To będzie naciskać przycisk do rozszerzenia w arkuszu działania, po Apple Rozszerzenie kompletacji została wywołana. Z jakiegokolwiek powodu/błędu w XCUITest po prostu naciśnięcie twojej aplikacji w arkuszu akcji nie działa:

[app.sheets.staticTexts[@"MyApp"] tap];