@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 取拿,但是我是一次崩溃都没跑出来。。。。