@zhangzhao_lenovo,罗列 FastMonkey 几个可以提高的点:
Descendants matching type Alert... 似乎也会暂停;【未解决】"instruments -v -t {template}  -w {device_udid}  -D {trace_file} -l 10000 {app_path} ,注意点:启动 XCTestWD 后面,可以延迟 10 秒再去执行这个 instruments 命令,这里我是用 python 的threading.Timer 搞了个定时;【解决】第一个问题,XCTWaiter 我 hook 了下,确实是 60s 超时,方法交换下,修改时间随意,我这边是 5s:
extension XCTWaiter {
    @objc open class func swizzled_wait(for expectations: [XCTestExpectation], timeout seconds: TimeInterval, enforceOrder enforceOrderOfFulfillment: Bool) -> XCTWaiter.Result {
        let result = self.swizzled_wait(for: expectations, timeout: 5, enforceOrder: enforceOrderOfFulfillment)
        return result
    }
    class func swizzleMethods() {
        let _ : () = {
            let originalSelector = #selector(XCTWaiter.wait(for:timeout:enforceOrder:))
            let swizzledSelector = #selector(XCTWaiter.swizzled_wait(for:timeout:enforceOrder:))
            let originalMethod = class_getClassMethod(XCTWaiter.self, originalSelector)
            let swizzledMethod = class_getClassMethod(XCTWaiter.self, swizzledSelector)
            method_exchangeImplementations(originalMethod!, swizzledMethod!)
        }()
    }
}
但是这样有个问题,其他用到这个方法的都会被替换了,自己做个处理哈。@John,比如搞个全局变量,第一次跳过了就不要固定 5s 超时了,或者判断是 60 秒超时就设置短一些
XCUIApplication.init 目前确实会等待 60s 左右才 lauch,一直等待系统方法 [XCTWaiter waitForExceptations:timeout:enforceOrder:]  设了 60s 的超时。。。 另外中间停顿粗略看报错是等待应用程序 idle 那个。目前整个自动化平台搭建完了,开始着手取解决这两个问题,毕竟影响了自动化效率,不解决不行。。。。请问 @zhangzhao_lenovo 大神,这两个问题解决了吗?求教。
ps: 关于性能确实可以配合 instrument 来获取,目前用自定义模板获取下 FPS,GPU 等数据,但是貌似也没啥价值。崩溃日志用 idevicecrashreport 取拿,但是我是一次崩溃都没跑出来。。。。