Ich war auf der Suche nach einer Lösung für mein Problem, wo ich meine App zu Hintergrund senden und neu von den jüngsten nach einem bestimmten Zeitintervall neu starten muss. InAs UIAutomation wurde dies mit deactivateAppForDuration() erreicht. Weiß jemand, wie man das in XCTest erreicht?App in den Hintergrund senden und neu starten in XCTest
Antwort
Nicht positiv, wenn das funktioniert, da ich es noch nicht getestet habe, aber es ist einen Versuch wert. Wenn nichts anderes, sollte es Ihnen eine gute Idee geben, wo Sie suchen.
XCUIApplication Klasse bietet Methoden, um sowohl zu beenden und die App starten programmatisch: https://developer.apple.com/reference/xctest/xcuiapplication
XCUIDevice Klasse können Sie eine Taste am Gerät simulieren: https://developer.apple.com/reference/xctest/xcuidevicebutton
Sie diese verwenden können, zusammen mit UIControl und NSURLSessionTask, um Ihre Anwendung zu unterbrechen.
Ein Beispiel für diesen Prozess so etwas wie dies mit Swift 3 aussehen könnte (Syntax etwas anders für Swift 2 sein kann und unten):
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()
}
Eine andere Möglichkeit kann einfach eine Home-Taste drücken ausführt, und dann Neubelebung der App nach einem Timer passiert:
func myXCTest {
XCUIDevice().press(XCUIDeviceButton.Home)
Timer.scheduledTimer(timeInterval: 5.0, target: self, selector: #selector(launchApp), userInfo: nil, repeats: false)
}
Keine dieser Möglichkeiten können tun, was Sie fragen, oder perfekt funktionieren, aber hoffentlich wird es geben Ihnen einen Ausgangspunkt. Sie können damit spielen und eine Lösung finden, die für Sie arbeitet. Viel Glück!
Ich habe es versucht, nachdem die Home-Taste gedrückt wurde, wurde die App in den Hintergrund verschoben. Aber die Funktion "Suspend" konnte die App nicht wieder in den Vordergrund bringen. – rachit
Also hat der Timer die App nicht heruntergezählt und neu gestartet? – user3353890
Hat diese Lösung für irgendjemanden funktioniert? Ich weiß, es hat 4 Stimmen, aber funktioniert es wirklich? Aufgrund der Kommentare ist es nicht klar. Vielen Dank. – rfodge
Wenn Sie Xcode 8.3 und iOS 10.3 mit Ihrem aktuellen Tests verwenden können, dann sollten Sie dies versuchen:
XCUIDevice.shared().press(XCUIDeviceButton.home)
sleep(60)
XCUIDevice.shared().siriService.activate(voiceRecognitionText: "Open {appName}")
Seien Sie sicher, @available(iOS 10.3, *)
an der Spitze Ihrer Testsuite-Datei aufzunehmen.
Dies entspricht relativ deactivateAppForDuration()
. Ändern Sie einfach die sleep()
auf Ihre gewünschte Dauer.
- 1. Wie man App in Genymotion und Android Studio neu lädt, ohne den Emulator neu zu starten?
- 2. Aufgabe in den Hintergrund senden und in den Vordergrund bringen
- 3. Wie chromecast Gerät neu starten, wenn App neu starten in android
- 4. Programmgesteuertes Senden einer App an den Hintergrund
- 5. Wie führe ich XCTest aus, ohne die App zu starten?
- 6. sockettimeOutexception, wenn App in den Hintergrund geht
- 7. Kann nicht starten Tests mit XCTest
- 8. Wenn App in den Hintergrund geschoben und neu erstellt wird, RecyclerView nicht wiederherstellen LayoutManager Status
- 9. PCF CLI starten und neu starten
- 10. XCTest App Tests und Berechtigungen Warnungen
- 11. Native App nach Absturz neu starten
- 12. Spring Boot Programmgesteuert neu starten App
- 13. React-App von Grund auf neu starten
- 14. ASP.NET Core App nach Absturz neu starten
- 15. Meine Phonegap App programmgesteuert neu starten
- 16. iOS XCTestCase zu starten, einige Aktionen ausführen, die App beenden und App neu starten
- 17. Wann muss ich den Server in Rails neu starten?
- 18. Deploy Sails.js auf Openshift ... App neu zu starten und immer
- 19. Programm in Python neu starten
- 20. Alle UIViewControllers aus der App entfernen und neu starten
- 21. Daten an den Server senden, wenn App Hintergrund ist
- 22. Wiederherstellen ImageView nach der App schließen und neu starten
- 23. Hintergrund Datensammler in Android startet neu, wenn App beendet wird
- 24. Programm programmgesteuert neu starten
- 25. Chef - starten oder starten Sie den Dienst nach Bedarf neu
- 26. iOS: Erzwungene geschlossene App wird im Hintergrund neu gestartet
- 27. Wie Hintergrund PostgreSQL neu starten, wenn wir Postgres neustarten?
- 28. Android GCM "Hintergrund" Benachrichtigungen starten nicht meine App, wenn geklickt
- 29. Server nach Absturz neu starten
- 30. `Synchronisiert` funktioniert nicht in XCTest
Sie können versuchen, nur den Fluss aufzuzeichnen, der Ihnen eine ziemlich gute Vorstellung davon geben sollte, wie Sie dies erreichen können. Die Aufnahme wird nicht beendet, nachdem die App an den Hintergrund gesendet wurde. Dann schlafe (n) deine Testausführung oder dispatch_after bis du es wieder in den Vordergrund bekommst (und stoppe die Aufnahme) – dogsgod
das habe ich ausprobiert. Nachdem er während der Aufzeichnung in den Hintergrund gegangen ist, greift er über die letzten Apps mit den Elementen von XCUIApplication() auf die App zu (es scheint für Rekorder zu sein. System wird jetzt XCUIApplication). Daher wird beim Versuch, diese Aufzeichnung auszuführen, ein Fehler ausgegeben. Grundsätzlich verlieren Sie den XCUIApplication-Kontext Ihrer App, wenn Sie die App verlassen. – rachit
@rachit hat die Lösung, die ich unten zur Verfügung gestellt habe, für Sie gearbeitet? – user3353890