我已经在表视图中实现了前导和尾随滑动操作。现在,我正在尝试在 XCTest UI 测试中测试它们。
\n\n测试任一方向的常规滑动很简单:
\n\ntableCell.swipeRight()\ntableCell.swipeLeft()\nRun Code Online (Sandbox Code Playgroud)\n\n使用其中之一会导致显示第一个操作按钮,然后我可以.tap()单击该按钮。
然而,测试完全滑动被证明更具挑战性。我已经玩过如何更快或更精确地滑动的这个扩展?
\n\n我还玩过问题Xcode7 ui testing: staticTexts[\xe2\x80\x9cXX\xe2\x80\x9d].swipeRight() swipes not far enough 的答案。
\n\n这两个本质上都是使用XCUIElement\ 的坐标(withNormalizedOffset:)方法从一个点滑动到另一个点,类似于以下内容:
\n\nlet startPoint = tableCell.coordinate(withNormalizedOffset: CGVector.zero)\nlet finishPoint = startPoint.withOffset(CGVector(dx:xOffsetValue, dy:yOffsetValue))\nstartPoint.press(forDuration: 0, thenDragTo: finishPoint)\nRun Code Online (Sandbox Code Playgroud)\n\n我最终得到了一个可以成功执行完全向右滑动的扩展- 但我似乎无法获得完全向左滑动的正确数字。
\n\n我的代码确实执行了向左滑动,但还不够远。我已经尝试过硬编码数字dx:-300 到 300 的硬编码数字。元素宽度是 414。我相信 0 是最左边,414 是最右边,所以我开始使用该大小作为参考。仍然没有喜悦。
我怎样才能让它执行向左完全滑动?
\n\nextension XCUIElement\n{\n enum SwipeDirection {\n case left, right\n }\n\n func longSwipe(_ …Run Code Online (Sandbox Code Playgroud)