如何在 EarlGrey 中使用 tapAtPoint

Posted

技术标签:

【中文标题】如何在 EarlGrey 中使用 tapAtPoint【英文标题】:How To Use tapAtPoint In EarlGrey 【发布时间】:2017-05-18 20:56:22 【问题描述】:

我正在编写测试,我想通过滑动删除 tableViewCell,显示红色的“删除”编辑操作。我可以很好地滑动单元格,但是当我尝试使用tapAtPoint时出现问题。

这是直接来自GREYActions.h

* @param point The point that should be tapped. It must be in the coordinate system of the element and it's position is relative to the origin of the element, as in (element_width/2, element_height/2) will tap at the center of element.

我尝试过使用元素的框架和边界宽度减去 1 点,然后像这样在单元格的中间:

CGPointMake(element.frame.size.width - 1, element.frame.size.height / 2)

我仍然无法点击单元格的末尾。

如果我可以进一步解释,请告诉我。

【问题讨论】:

你试过减少element.frame.size.width - 1吗?您可能有一些内容偏移或边界可能会吞噬触摸。 element.frame.size.width - 20 之类的? 【参考方案1】:

@gran_profaci 我接受了你的想法,并采取了另一种方式。

这是我学到的:

有一个名为UITableViewCellDeleteConfirmationView 的类,当您在单元格上滑动时会显示该类。它可能是一个私有类,因为您在使用

遍历单元格的子视图时无法访问或匹配它
if ([subview class] == [UITableViewCellDeleteConfirmationView class])

从技术上讲,就好像这个视图在屏幕外,滑动会将其带到屏幕上。正因为如此,它实际上 not 在单元格的坐标系内 - 它在 x 轴上的 after 上。例如,如果屏幕的宽度以及 tableView 和 tableViewCell 的宽度为 600,则确认视图的帧原点将类似于 (600.5, ...)

最后,我在单元格的宽度上添加了 5 个点,效果非常好。

CGPointMake(element.frame.size.width + 5, element.frame.size.height / 2)

【讨论】:

哇哦,这真的很有趣。您应该考虑将其添加到 EarlGrey 常见问题解答中。

以上是关于如何在 EarlGrey 中使用 tapAtPoint的主要内容,如果未能解决你的问题,请参考以下文章

EarlGrey 可以使用多个可访问性标签或文本

在 EarlGrey 中,等待元素出现的非轮询方式是啥?

使用 EarlGrey 2.0 和 Swift 敲击系统警报

[转] Google 开源 iOS 应用测试工具:EarlGrey

Google推出iOS功能性UI测试框架EarlGrey

iOS:两次运行相同测试后出现 Earlgrey/Detox 错误