Ios iphone4s模拟器上的Swift UI测试失败,与其他模拟器配合良好

Ios iphone4s模拟器上的Swift UI测试失败,与其他模拟器配合良好,ios,iphone,swift,ui-testing,nsunknownkeyexception,Ios,Iphone,Swift,Ui Testing,Nsunknownkeyexception,我的应用程序中有一个登录屏幕,然后在取消登录视图后,会出现一个选项卡 应用程序本身在所有设备/模拟器中运行良好。UI测试在除iPhone4S之外的所有模拟器中都有效 我想原因是登录后,登录屏幕消失的时间太长了。因此,当我尝试访问tabbar时,它会抛出一个异常 我试过了 let tabBarsQuery = app.tabBars let predicate = NSPredicate(format: "exists == true") expectationForPredicate(predi

我的应用程序中有一个登录屏幕,然后在取消登录视图后,会出现一个选项卡

应用程序本身在所有设备/模拟器中运行良好。UI测试在除iPhone4S之外的所有模拟器中都有效

我想原因是登录后,登录屏幕消失的时间太长了。因此,当我尝试访问tabbar时,它会抛出一个异常

我试过了

let tabBarsQuery = app.tabBars
let predicate = NSPredicate(format: "exists == true")
expectationForPredicate(predicate, evaluatedWithObject: tabBarsQuery, handler: nil)
waitForExpectationsWithTimeout(15, handler: nil) 
我得到以下错误

failed: caught "NSUnknownKeyException", "[<XCUIElementQuery 0x7e080d40> valueForUndefinedKey:]: this class is not key value coding-compliant for the key exists."
失败:捕获到“NSUnknownKeyException”,“[valueForUndefinedKey:]:此类不符合键值编码,因为键值存在。”

为什么期望不起作用?我怎样才能解决这个问题

因此,无论出于何种原因,XUIElementQueries集合的.exists属性都不存在。在您的示例中,无法执行
app.tabbar.exists
。但是,您可以将谓词更改为:

let predicate = NSPredicate(format: "count > 0")

这应该行得通。

因此,无论出于何种原因,.exists属性对于XUIElementQueries集合都不存在。在您的示例中,无法执行
app.tabbar.exists
。但是,您可以将谓词更改为:

let predicate = NSPredicate(format: "count > 0")

这应该是可行的。

您用于测试的所有设备都有完全相同的iOS固件吗?我将all Simulator设置为9.2,现在它在所有设备中都发生了。当我删除
谓词时,除了4s之外,它对所有设备都有效。虽然您用于测试的所有设备都有完全相同的iOS固件吗?我设置了all模拟器到9.2,现在它在所有的模拟器中都发生了。当我删除
谓词时,除了4s之外,它对所有的模拟器都有效