用于测试目的(制作本地通知的屏幕截图)我需要能够从代码中锁定设备(模拟器)(测试代码或应用程序代码)。 我从这里看了几个答案(GSEventLockDevice),但它们已经很老了,对我不起作用
答案 0 :(得分:6)
XCUIDevice中有一个私有方法,因此您可以使用它来锁定设备/模拟器。
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)
}
}
并会收到这样的内容:
我没有使用您正在使用的快照工具的经验,但您需要知道转移到锁定状态需要时间,因此在创建快照之前等待一段时间可能很有用(您可以使用这样的代码):
let date = Date(timeIntervalSinceNow: 3)
while date.timeIntervalSinceNow > 0 {
CFRunLoopRunInMode(CFRunLoopMode.defaultMode, 0.1, true)
}
此外,您可以在测试结束时通过调用(仅限iOS 10)返回SpringBoard:
XCUIDevice.shared().press(.home)
希望它有所帮助!