【发布时间】:2022-12-05 01:57:12
【问题描述】:
示例项目
这是一个显示问题的示例项目。它是基于故事板的,但是构建界面的方法并不重要。它是UIViewController,整个屏幕是UIScrollView,128 pts 高度视图位于UIScrollView 之上。
在滚动视图中有一个 UIView,中间有 2000 pts 高度和 UIButton。
链接在这里:https://github.com/JakubMazur/UITestsDemo
问题
- 我正在尝试使用
XCUITest使用app.buttons["Tap Me!"].tap()点击这个绿色按钮 - XCUITest 从屏幕上的元素获取整个滚动视图的标识符,工作正常。
- 根据 Apple Framework Engineer 在 Apple Developer Forum 上的一个帖子的回复,我不应该手动滚动到按钮,是的,这是部分正确的。
- 执行 (1) 中的代码时发生的情况是按钮滚动到足以在屏幕上可见但它仍然不可点击,因为其他(紫色视图)位于
UIScrollView之上
什么是工作
如果我运行这样编写的测试:
func testThatDoWorkButItsSlow() { app.scrollViews.firstMatch.swipeUp() app.buttons[buttonLabel].tap() }向上滚动,然后寻找一个可以使用的按钮,但它速度慢且不准确,几乎无法使用。
我不能做什么
在紫色视图中禁用
userInteractions。在实际示例中,我仍然需要触摸此(紫色)视图。问题
- 对于这种情况,有没有办法在 XCTest 中使用精确滚动?
- 或者有没有办法将
contentOffsetscrollview 设置为其他值,与tap()的操作相比,这将使该按钮更居中于屏幕? - 或者有一种方法可以快速滚动到底部(没有动画)并且可能只针对每个元素向上移动?
- 执行 (1) 中的代码时发生的情况是按钮滚动到足以在屏幕上可见但它仍然不可点击,因为其他(紫色视图)位于
【问题讨论】: