Ios xcode 9中的xcode ui测试面临的问题

Ios xcode 9中的xcode ui测试面临的问题,ios,xcode,ios-ui-automation,swift3.2,Ios,Xcode,Ios Ui Automation,Swift3.2,ios应用程序的UI测试,在XCode 8和swift 3.2中开发 面临处理ScrollView的问题,将XCode升级到9后的CollectionView 我可以点击并访问按钮、静态文本、文本字段元素。 但是我不能点击或访问XCode9和Swift 3.2上的CollectionView、ScrollView、TableView元素 假设在以前的XCode版本(即XCode 8.3)中,我使用了代码app.collectionview.collectionview.cells.images.

ios应用程序的UI测试,在XCode 8和swift 3.2中开发

面临处理ScrollView的问题,将XCode升级到9后的CollectionView

我可以点击并访问按钮、静态文本、文本字段元素。 但是我不能点击或访问XCode9和Swift 3.2上的CollectionView、ScrollView、TableView元素

假设在以前的XCode版本(即XCode 8.3)中,我使用了代码
app.collectionview.collectionview.cells.images.element(boundBy:0).tap()

点击主页(CollectionView)。但这段代码在XCode 9中不起作用

我尝试使用uitest录制功能获取确切的元素。 通过录音我得到了密码-

app.collectionViews.otherElements.containing(.textField, identifier:"StoryboardTitleTextField").children(matching: .collectionView).element.tap().
但是这个代码也不起作用。那么我该如何解决这个问题呢


谢谢

最近,在将我的项目(Swift 3.2)升级到XCode 9之后,我也遇到了类似的问题

问题是

 app.collectionViews.collectionViews.cells.images.element(boundBy: 0).isHittable is returning false. 
这就是为什么默认的tap()方法不适用于层次结构元素

我只是做了下面的程序,效果很好

步骤1:创建如下扩展

extension XCUIElement {
func tryClick() {
    if self.isHittable {
        self.tap()
    }
    else {
        let coordinate: XCUICoordinate = self.coordinate(withNormalizedOffset: CGVector(dx:0.5, dy:0.5))
        coordinate.doubleTap()
        //coordinate.press(forDuration: 0.5)
    }
  }
}
步骤2:使用上面创建的实例方法而不是直接点击()方法点击元素

注意:尝试使用

CGVector(dx:0.5, dy:0.5) or CGVector(dx:0.0, dy:0.0)

希望它能解决你的问题。这对我来说很有魅力。

谢谢马哈茂德。你做得很好。它也对我有用。你能告诉我CGVector(dx:0.5,dy:0.5)在扩展方法中做了什么吗。@AliAzam这是你想要点击该元素的坐标x,y位置。请让我知道它是否解决了您的问题。
CGVector(dx:0.5, dy:0.5) or CGVector(dx:0.0, dy:0.0)