do celów testowych (tworzenie zrzutu ekranu lokalnego powiadomienia) muszę mieć możliwość zablokowania urządzenia (symulatora) z kodu (kod testowy lub kod aplikacji). Spojrzałem na kilka odpowiedzi stąd (GSEventLockDevice), ale są one dość stare i nie działa dla mnieiOS, blokowanie urządzenia z kodu
8
A
Odpowiedz
5
Istnieje prywatna metoda w XCUIDevice, dzięki czemu można zablokować urządzenie/symulator za jego pomocą.
Przykład Swift 3:
import XCTest
class LockTests: XCTestCase {
func testExample() {
XCUIDevice.shared().perform(NSSelectorFromString("pressLockButton"))
let localNotification = UILocalNotification()
localNotification.fireDate = Date(timeIntervalSinceNow: 2)
localNotification.alertBody = "This is local notification"
localNotification.timeZone = NSTimeZone.local
localNotification.category = "Message"
UIApplication.shared.scheduleLocalNotification(localNotification)
}
}
i otrzymasz coś takiego:
mam żadnego doświadczenia z narzędzia migawki używasz, ale trzeba wiedzieć, że przejście do stanu zablokowania potrzeba czasu, więc może być przydatne poczekanie trochę czasu przed utworzeniem migawki (możesz użyć takiego kodu):
let date = Date(timeIntervalSinceNow: 3)
while date.timeIntervalSinceNow > 0 {
CFRunLoopRunInMode(CFRunLoopMode.defaultMode, 0.1, true)
}
Ponadto, można powrócić do SpringBoard w końcu badania pod numerem (10 tylko iOS):
XCUIDevice.shared().press(.home)
Nadzieję, że to pomaga!
Powiązane problemy
- 1. iOS bringSubviewToFront blokowanie animacji UIView
- 2. iOS: Zmiana głośności urządzenia
- 3. Blokowanie kodu Git kodu przeniesionego/usuniętego w pliku
- 4. Odzyskaj identyfikator urządzenia iOS
- 5. wyłączyć głośność urządzenia - iOS
- 6. Jak kodować optymistyczne i pesymistyczne blokowanie z kodu java
- 7. debugowanie urządzenia iOS 8 z Xcode 5.1.1
- 8. Jak zdiagnozować blokowanie w aplikacji na iOS?
- 9. Urządzenia iOS jako serwer WWW
- 10. Blokowanie blokad a Blokowanie niezablokowujące
- 11. Wyłącz automatyczne blokowanie ekranu w systemie iOS 5.1
- 12. Uwierzytelnianie w aplikacji Google Engine z urządzenia z systemem iOS
- 13. Deinstalowanie aplikacji z urządzenia iOS z poziomu wiersza poleceń
- 14. Skanowanie urządzenia Bluetooth LE w tle z iOS
- 15. Odtwarzanie iio urządzenia audio ios podczas nagrywania
- 16. Przykład tokenu urządzenia iOS dla powiadomień Push
- 17. blokowanie transakcji z serializacją transakcji
- 18. Jak mogę wyeksportować plik mp3 z biblioteki iPoda urządzenia iOS?
- 19. Jak uzyskać identyfikator UDID martwego urządzenia z systemem iOS?
- 20. Testowanie urządzenia iOS: oczekiwanie na interwał z oczekiwaniami
- 21. Powiadomienia push w systemie iOS - jak postępować z identyfikatorem urządzenia?
- 22. Xcode iOS 6 z 8 SDK: brak Urządzenia organizator
- 23. Nievilbreak serwer VNC dla systemu iOS? Zdalnie korzystać z urządzenia z systemem iOS?
- 24. Blokowanie obiektu
- 25. UIAlertView blokowanie
- 26. Określanie urządzenia użytkownika za pomocą iOS SDK i pełnego kodu Cocoa Touch/Objective-C
- 27. Uzyskaj statystyki pokrycia kodu IOS
- 28. Blokowanie przekierowań tagów HTML
- 29. Blokowanie statycznych elementów klasy
- 30. Blokowanie i usuwanie plików
Możesz utworzyć skrypt Apple, który to zrobi i użyje go w swoim kodzie. (nie z iOS, ale ponieważ jest to symulator, można go uruchomić poza kodem projektu) http://apple.stackexchange.com/questions/135728/using-applescript-to-lock-screen –
Chcę, żeby to był część mojego zestawu testów, czy to możliwe? – kap
Uruchamianie skryptu skryptu Apple z projektu iOS nie jest opcją, o ile wiem. Możesz utworzyć plik powłoki, który uruchomi xcodebuild, który uruchomi Twój zestaw testów, a także uruchomi skrypt Apple w tym samym czasie. https://developer.apple.com/library/prerelease/content/documentation/DeveloperTools/Conceptual/testing_with_xcode/chapters/08-automation.html –