zu Testzwecken (Erstellen eines Screenshots einer lokalen Benachrichtigung) Ich muss in der Lage sein, das Gerät (Simulator) aus Code (entweder Testcode oder App-Code) zu sperren. Ich habe ein paar Antworten von hier (GSEventLockDevice) angeschaut, aber sie sind ziemlich alt und funktionierte nicht für michiOS, Sperren des Geräts von Code
8
A
Antwort
5
Es gibt eine private Methode in XCUIDevice, so dass Sie Gerät/Simulator damit sperren können.
Beispiel für 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)
}
}
Und wird so etwas wie diese erhalten:
Ich habe keine Erfahrung mit Snapshot-Tool, das Sie verwenden, aber Sie müssen wissen, dass sich bewegenden Der Sperrstatus benötigt Zeit. Es kann daher sinnvoll sein, vor der Erstellung des Snapshots etwas zu warten (Sie können den folgenden Code verwenden):
let date = Date(timeIntervalSinceNow: 3)
while date.timeIntervalSinceNow > 0 {
CFRunLoopRunInMode(CFRunLoopMode.defaultMode, 0.1, true)
}
Auch können Sie auf Springboard am Ende des Tests zurückzukehren unter der Rufnummer (iOS 10 only):
XCUIDevice.shared().press(.home)
Hoffe, es hilft!
Verwandte Themen
- 1. iOS-App zum Sperren des Bildschirms oder Ausschalten des Geräts nach einer bestimmten Zeit
- 2. Identifizierung des Geräts für iPad iOS 4.2
- 3. Senden Aktion beim Drehen des Geräts iOS
- 4. Angular {{Code}} ist während des Drehens des mobilen Geräts sichtbar
- 5. iPad Entwicklung Erkennung der Version des Geräts
- 6. Gesamtspeicher des UWP-Geräts
- 7. Fehler beim Registrieren des IOS-Geräts in WSO2 2.0.1
- 8. iOS RegionMonitoring ohne signifikante Standortänderung nach dem Neustart des Geräts
- 9. Entsperren des Geräts durch Ui Automator 2.0
- 10. Wie kann ich batteriebezogene Informationen des iOS-Geräts programmgesteuert ermitteln?
- 11. iOS erhalten Seriennummer des Geräts (iPad) auf iOS7
- 12. Rufen Sie die Telefonnummer des Geräts programmgesteuert
- 13. Programmatisch sperren iPhone auf iOS
- 14. Debug-App nach Neustart des Geräts
- 15. Firmware des physischen Geräts lesen
- 16. Eindeutige ID des Android-Geräts
- 17. Name des Android-Geräts == "BlueZ"?
- 18. Entfernung des angeschlossenen WLAN-Geräts
- 19. Einschränken des Herunterladens von Bildern je nach Größe des Geräts
- 20. Xamarin.Droid - Erhalte die Telefonnummer des Geräts
- 21. Gesamte RAM-Größe eines iOS-Geräts
- 22. So erstellen Sie eine Xamarin.iOS-App zum Aktivieren des Kioskmodus (Sperren des Geräts auf eine einzelne Anwendung)?
- 23. javax.comm: Fehler beim Trennen des Geräts
- 24. Wie kann ich den Standort des Geräts (iOS und Android) mithilfe von Phonegap verfolgen?
- 25. Bildschirm sperren Ausrichtung auf Hochformat - IOS Swift
- 26. Einstellung der Größe des Geräts rgl
- 27. Fortlaufende Lesevorgänge des Slave-Geräts - Beste Lösung?
- 28. Übersteht FirebaseMessagingService den Neustart des Geräts?
- 29. Fehler beim Starten des virtuellen Android-Geräts
- 30. Hardware-Seriennummer des Android-Geräts abrufen
Sie können ein Apple-Skript erstellen, das das tut und in Ihrem Code verwendet. (nicht von iOS, aber da es ein Simulator ist, können Sie es außerhalb Ihres Projektcodes ausführen) http://apple.stackexchange.com/questions/135728/using-applescript-to-lock-screen –
Ich möchte es ein Teil meiner Testsuite, ist das möglich? – kap
Das Ausführen von Apple Skript Skript von einem iOS-Projekt ist keine Option, soweit ich weiß. Sie können eine Shelldatei erstellen, die xcodebuild ausführt, auf der Ihre Testsuite ausgeführt wird, und gleichzeitig ein Apple-Skript ausführen. https://developer.apple.com/library/prerelease/content/documentation/DeveloperTools/Conceptual/testing_with_xcode/chapters/08-automation.html –