use*_*712 2 xcode ios xcode-ui-testing
我已经进行了一些过去一年的UI测试,他们每晚都会运行,我们设置了一台显示器,这样我们就可以看到它们何时出现故障,而且几个月和几个月都没问题.
今天早上我们将机器更新为Xcode 8.3.2,将构建服务器从8.2更新到8.3.2,现在UI测试不再通过.
我有一个包含12个单元格的tableView,前6个是可见的,但我想按最后一个单元格,所以我调用swipeUp()来滚动tableView.通常,tableView将滚动一两秒,我想要的单元格变得可见,我可以断言它存在并在其上调用tap().
然而,现在,当观看UI测试运行时,当调用swipeUp()方法时,它不再滚动很长时间.它似乎只滚动几毫米然后停止,这意味着断言失败,我们无法点击单元格,因此我们所有的UI测试都失败了.
我在网上搜索过这个,除了这个似乎有同样问题的小片段之外,找不到太多信息.
我试图按照建议删除swipeUp()调用,但这似乎没有解决问题,我们已经测试了几个Xcode安装和笔记本电脑以达到同样的效果.
只是寻找一些建议,我想知道是否有其他人看过这个问题?
这个问题有几种可能的解决方案.
tap()方法.XCTestCase可以自动滚动到给定元素,并在使用tap()方法时点击它.
let predicate = NSPredicate(format: "label == %@", "12")
let cell = table.cells.containing(predicate).element
cell.tap()
Run Code Online (Sandbox Code Playgroud)而不是使用swipeUp()您可以使用的方法XCUICoordinate.press(forDuration:thenDragTo:).这有点棘手,因为你必须处理XCUICoordinate对象.
从底部到顶部滑动的示例用法:
let bottom = table.coordinate(withNormalizedOffset: CGVector(dx: 0.5, dy: 0.9))
let top = table.coordinate(withNormalizedOffset: CGVector(dx: 0.5, dy: 0.1))
bottom.press(forDuration: 0.1, thenDragTo: top)
Run Code Online (Sandbox Code Playgroud)
请注意值0.9和0.1.
1.0底部值,则将打开控制中心.0.0用作顶点,则您将打开通知中心.如果需要多次滑动,您可以使用while循环(或类似)向上滚动,直到单元格可见:
let predicate = NSPredicate(format: "label == %@", "12")
let cell = table.cells.containing(predicate).element
while !cell.isHittable {
table.swipeUp()
}
Run Code Online (Sandbox Code Playgroud)
当然,还需要一些其他的休息条件;)
您可以使用具有帮助方法的AutoMate库进行滑动,例如:swipe(to:).
let predicate = NSPredicate(format: "label == %@", "12")
let cell = table.cells.containing(predicate).element
table.swipe(to: scrollPage.topButton)
Run Code Online (Sandbox Code Playgroud)
此外,该库可以处理键盘可见的情况,处理不同的设备方向(rdar:// 31529903,gist)等等.
| 归档时间: |
|
| 查看次数: |
342 次 |
| 最近记录: |