iOS,从代码锁定设备

时间:2016-08-11 11:54:31

标签: ios xctest

用于测试目的(制作本地通知的屏幕截图)我需要能够从代码中锁定设备(模拟器)(测试代码或应用程序代码)。 我从这里看了几个答案(GSEventLockDevice),但它们已经很老了,对我不起作用

1 个答案:

答案 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)
  }
}

并会收到这样的内容:

enter image description here

我没有使用您正在使用的快照工具的经验,但您需要知道转移到锁定状态需要时间,因此在创建快照之前等待一段时间可能很有用(您可以使用这样的代码):

let date = Date(timeIntervalSinceNow: 3)
while date.timeIntervalSinceNow > 0 {
  CFRunLoopRunInMode(CFRunLoopMode.defaultMode, 0.1, true)
}

此外,您可以在测试结束时通过调用(仅限iOS 10)返回SpringBoard:

XCUIDevice.shared().press(.home)

希望它有所帮助!