iOS中的UITesting:tap()方法无法正常工作

时间:2017-08-04 09:36:28

标签: ios iphone xcode8 ui-testing ios10.3.2

我在iOS 10.3.2和Xcode 8.3.3下使用Swift进行UITesting时遇到了一个奇怪的问题。

我在我的应用程序中运行一个简单的测试,它应该点击并验证TableView中的每一行(是我的应用程序的Settings视图,因此每一行都是从磁盘加载的,在此步骤中没有任何内容从Web下载),但由于一个奇怪的原因,当我点击以前不可见的行时.tap()方法不起作用。

示例代码:

let app = XCUIApplication()  

let myTableView = app.tables.element(matching: .table, identifier:    "tableView01")  
myTableView.swipeUp(). //I swipe so that the cell becomes visible...  

let myCell = myTableView.cells.element(matching: .cell, identifier: "tappableCell")  

myCell.tap()  

奇怪的是我在Xcode中有来自控制台的正确输出

 t =   328.24s     Tap "tappableCell" Cell
    t =   328.24s         Wait for app to idle
    t =   328.80s         Find the "tappableCell" Cell
    t =   328.80s             Snapshot accessibility hierarchy for com.thefloow.enterprise.ownbrand
    t =   328.92s             Find: Descendants matching type Table
    t =   328.92s             Find: Element at index 0
    t =   328.92s             Find: Descendants matching type Cell
    t =   328.92s             Find: Elements matching predicate '"tappableCell" IN identifiers'
    t =   329.04s             Wait for app to idle
    t =   329.22s         Synthesize event
    t =   329.37s         Wait for app to idle

另一个奇怪的事情是,如果我在tap方法之前设置了一个断点,然后我从命令行运行它,它完全可以从控制台给我相同的输出。

这种奇怪行为可能是什么原因?

感谢您的帮助! 安德烈

1 个答案:

答案 0 :(得分:0)

我发现问题出现在框架中。滚动后,UI没有正确响应,所以我不得不双击单元格来重新签名UIResponder,然后测试工作正常。我还向报告了这个问题,以了解它是否是一种常规行为。

但是谢谢大家!快乐的编码!