Objective c UI自动化:元素如何存在但不可命中?

Objective c UI自动化:元素如何存在但不可命中?,objective-c,ios-ui-automation,Objective C,Ios Ui Automation,好的,我在这里画了一个空白。第一个条件是真的,第二个条件不是我运行它的时候。这怎么可能 我正在使用最新的xcode,最新的os XCUIApplication*app=[[XCUIApplication alloc]init] xguielement*usernameTextField=app.textFields[@Username] if (usernameTextField.exists) { NSLog(@"condition returns true"); }else if (

好的,我在这里画了一个空白。第一个条件是真的,第二个条件不是我运行它的时候。这怎么可能

我正在使用最新的xcode,最新的os

XCUIApplication*app=[[XCUIApplication alloc]init]

xguielement*usernameTextField=app.textFields[@Username]

if (usernameTextField.exists) {
    NSLog(@"condition returns true");
}else if ( usernameTextField.hittable){
    NSLog(@"doesn't execute");
}
[用户名文本字段点击]; 当我点击应用程序时,应用程序将失败: UI测试活动: 断言失败:UI测试失败-应用程序未能在30.0秒内停止


有什么想法吗?

可点击性是一个指标,表明是否可以使用给定点处理手势

鉴于UI测试将视图层次结构扁平化为基于查询的系统,这只意味着如果视图的一部分在屏幕上,那么它是可命中的,否则它就不可命中

例如,如果我有一个UITableView,它有一堆单元格,那么您可以在屏幕上看到的第一个单元格是可点击的。最后一个你看不到的单元格是不可点击的,因为它们不在屏幕上


元素仍然可以存在于坐标空间中,并且可以不在屏幕上。在上一个示例中,长表视图的最后一个单元格仍然存在,只是无法与之交互。

如果希望两者都为真,为什么else语句中的第二个条件是真的?如果第一个是真的,那么第二个肯定不会被执行。如果某个东西存在,但不是可命中的,可能是隐藏的,或者是零帧?