如何在 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 2.0 和 Swift 敲击系统警报