8

我有一个包含很多单元格的表格视图,并不是每个单元格都在屏幕上可见。当我检查时

table.cells.staticTexts.matchingIdentifier("My Cell").element.exists

它返回 true,但单元格在屏幕上不可见,我无法点击它。因为每当我点击它时,测试都会失败。

如何检查元素是否在屏幕上可见?或者如何点击不可见的元素?

4

4 回答 4

9

使用hittable属性而不是exists.

XCUIElement的类参考解释说,只有可以触摸元素时,该hittable属性才会返回。true

table.cells.staticTexts.matchingIdentifier("My Cell").element.hittable
于 2016-02-16T11:04:11.187 回答
0

而不是使用 element.exists 尝试使用 element.hittable。这对我有用,如果元素当前处于显示层次结构中,即使它在屏幕视图之外,exists 也会返回 true。只有当元素在屏幕上并且它的可命中时,hittable 才会返回 true。

于 2016-02-09T00:19:26.483 回答
0

如果当前正在显示, tableview 方法 cellForRowAtIndexPath(不是同名的委托方法)将返回某个索引路径的单元格,如果未显示,则返回 nil。

如果用户单击一个按钮(或者如果您的单元格中的任何视图发生任何事情),您还可以向上查看视图层次结构以首先找到单元格,然后是表格视图,并且方法 indexPathForCell 将为您提供索引路径细胞。

于 2016-02-16T11:11:56.100 回答
0

您可以使用 swipeUp 方法向下滚动,直到特定单元格可见。您还可以检查单元是否存在。像这样的东西。

XCUIElementQuery *tableQuery = app.tables;
 if (!tablesQuery.cells.staticText[@"some text"].exist){
  [tablesQuery.staticTexts[@"visible cell text"] swipeUp];
}
于 2016-04-20T14:25:57.713 回答