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!
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 –