Szukałem rozwiązania mojego problemu, w którym muszę wysłać moją aplikację do tła i ponownie uruchomić ją z ostatnich po określonym czasie. deactivateAppForDuration() został użyty do osiągnięcia tego w UIAutomation Instruments. Czy ktoś wie, jak to osiągnąć w XCTest?Wysyłanie aplikacji na tło i ponowne jej uruchamianie od czasu do czasu w XCTest
Odpowiedz
Nie jest pozytywne, jeśli to zadziała, ponieważ jeszcze tego nie testowałem, ale warto spróbować. Jeśli nic innego nie powinno dać ci dobrego pomysłu, gdzie szukać.
klasa XCUIApplication zapewnia metody zarówno zakończyć i uruchomić aplikację programowo: https://developer.apple.com/reference/xctest/xcuiapplication
klasa XCUIDevice pozwala symulować nacisnąć przycisk na urządzeniu: https://developer.apple.com/reference/xctest/xcuidevicebutton
można użyć tych wraz z UIControl i NSURLSessionTask do zawieszenia aplikacji.
Przykładem tego procesu z wykorzystaniem Swift 3 może wyglądać mniej więcej tak (składnia może być nieco inna dla Swift 2 i poniżej):
func myXCTest() {
UIControl().sendAction(#selector(NSURLSessionTask.suspend), to: UIApplication.shared(), for: nil)
Timer.scheduledTimer(timeInterval: 5.0, target: self, selector: #selector(launchApp), userInfo: nil, repeats: false)
}
func launchApp() {
XCUIApplication().launch()
}
Innym sposobem może być po prostu wykonującemu naciśnij przycisk HOME, a następnie wznowienie aplikację po przejechaniu timer:
func myXCTest {
XCUIDevice().press(XCUIDeviceButton.Home)
Timer.scheduledTimer(timeInterval: 5.0, target: self, selector: #selector(launchApp), userInfo: nil, repeats: false)
}
Żaden z tych sposobów może robić co pytasz, czy działa idealnie, ale miejmy nadzieję, że to daje punkt wyjścia. Możesz się z nim bawić i znaleźć rozwiązanie, które będzie dla ciebie skuteczne. Powodzenia!
Próbowałem, Po naciśnięciu przycisku home aplikacja została przeniesiona do tła. Ale funkcja zawieszenia nie była w stanie ponownie przywrócić aplikacji na pierwszy plan. – rachit
Więc timer nie odliczał i ponownie uruchomił aplikacji? – user3353890
Czy to rozwiązanie działa u każdego? Wiem, że ma 4 głosy na górę, ale czy to rzeczywiście działa? Na podstawie komentarzy nie jest jasne. Dzięki. – rfodge
Jeśli można użyć Xcode 8.3 i iOS 10,3 z aktualnych badań, to może chcesz spróbować to:
XCUIDevice.shared().press(XCUIDeviceButton.home)
sleep(60)
XCUIDevice.shared().siriService.activate(voiceRecognitionText: "Open {appName}")
Pamiętaj, aby podać @available(iOS 10.3, *)
na górze pliku zestawu testowego. To jest względnie równoważne z deactivateAppForDuration()
. Po prostu zmień sleep()
na żądany czas.
- 1. Aktualizowanie alarmu od czasu do czasu na zatwierdzenie w Androidzie
- 2. Django - NieczytelnyPostError od czasu do czasu?
- 3. CSS - przyciski od czasu do czasu są niemożliwe do skasowania?
- 4. SQLAlchemy od czasu do czasu błędnie zwraca pusty wynik
- 5. Pozostało czasu na sesję do czasu przekroczenia limitu czasu
- 6. Wykrywanie i ponowne uruchamianie uszkodzonej aplikacji .NET
- 7. Forever.js uruchamianie i ponowne uruchamianie wielu skryptów
- 8. IntelliJ IDEA 12.1 spożywać 100% procesora od czasu do czasu
- 9. Grails: Obrazy/CSS brakuje od czasu do czasu
- 10. Ponowne uruchamianie Sidekiq
- 11. Jak zdobyć uniksowy znacznik czasu w MySQL od czasu UTC?
- 12. Tworzenie DATETIME od DATA i CZASU
- 13. Tapestry Web App na Tomcat od czasu do czasu wypluwa śmieci
- 14. Własny ciąg daty i czasu od milisekund
- 15. Wyłącz automatyczne ponowne ładowanie Chrome na błąd przekroczenia limitu czasu
- 16. Ponowne uruchamianie scenariusza WPF
- 17. javascript dodaj obiekt od minuty do czasu
- 18. Wzorzec projektowy dla czasu aplikacji?
- 19. Epoka od czasu do daty na ograniczonym osadzonym urządzeniu
- 20. Odejmij minuty od wartości czasu
- 21. Dodaj pewną ilość czasu do czasu bieżącego i zapisać go
- 22. Ponowne uruchamianie zakończone niepowodzeniem i niezalecane testy
- 23. Odejmowanie czasu.Dział od czasu w Go
- 24. Emulator Android przyspiesza ponowne uruchamianie
- 25. Wysokość strony aplikacji na oś czasu zatrzymała się na 800px
- 26. Różnica czasu w sekundach od numpy.timedelta64
- 27. Rozróżnienie limitu czasu od anulowania przez użytkownika
- 28. Zapisywanie czasu zalogowania i czasu trwania sesji - Java - Spring Security
- 29. Od czasu do czasu ios MKMapView ulega awarii po przejściu do innego ekranu i powrocie do MapScreen
- 30. Usuń sekund od czasu w R
Możesz spróbować po prostu zarejestrować przepływ, który powinien dać Ci całkiem niezły pomysł, jak to osiągnąć. Nagrywanie nie zatrzyma się po przesłaniu aplikacji do tła. Następnie przespij się (n) swoją egzekucją testową lub dispatch_after, aż wrócisz na pierwszy plan (i zatrzymaj nagrywanie). – dogsgod
Próbowałem tego. Po przejściu do tła podczas nagrywania, uzyskuje dostęp do aplikacji z ostatnich aplikacji przy użyciu elementów XCUIApplication() (Wydaje się, że dla rejestratora system ui staje się teraz XCUIApplication). Dlatego próbując uruchomić to nagranie, powoduje błąd. Zasadniczo tracisz aplikację XCUIApplication, jeśli opuścisz aplikację. – rachit
@rachit czy rozwiązanie, które podałem poniżej, działa dla ciebie? – user3353890