如何使用Xcode 7 UI测试检查表视图中的单元格是否可见?

8

我有一个表格视图,其中有很多单元格,并不是每个单元格都在屏幕上可见。当我使用

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

它会返回 true,但是该单元格在屏幕上不可见,我无法点击它。因为每次我点击它时,测试都会失败。
如何检查元素是否在屏幕上可见?或如何点击不可见的元素?

这是我对这个问题的解决方案 - 希望能帮到你 https://dev59.com/RFwY5IYBdhLWcg3wM1bK#33538255 - Tucker Sherman
4个回答

9
使用hittable属性代替existsXCUIElement类引用文档中说明,如果元素可以被点击,则hittable属性会返回true。请注意,此属性只表示元素是否可见并能够被触摸,而不是元素是否存在或可用。
table.cells.staticTexts.matchingIdentifier("My Cell").element.hittable

0

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

XCUIElementQuery *tableQuery = app.tables;
 if (!tablesQuery.cells.staticText[@"some text"].exist){
  [tablesQuery.staticTexts[@"visible cell text"] swipeUp];
}

0

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

如果用户点击按钮(或者在您的单元格中发生任何视图事件),您还可以沿着视图层次结构向上查找单元格,然后是表视图,方法indexPathForCell将为您提供单元格的索引路径。


0

不要使用 element.exists,而是尝试使用 element.hittable。这对我很有效,因为 exists 会在元素当前在显示层次结构中时返回 true,即使它在屏幕视图之外。而 hittable 只有在元素在屏幕上并且可点击时才返回 true。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接