首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XCode 9中XCode-ui测试面临的问题

XCode 9中XCode-ui测试面临的问题
EN

Stack Overflow用户
提问于 2017-11-13 15:56:43
回答 1查看 426关注 0票数 3

一个ios应用程序的用户界面测试,在XCode 8和迅捷3.2中开发。

ScrollViews、collectionViews升级到9后面临的问题

我可以点击和访问按钮,StaticTexts,TextFields元素。但是我不能点击或访问XCode9和SWIFT3.2上的集合视图、滚动视图、表视图元素。

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

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

我试着用最丑的录音功能得到准确的元素。通过录音我得到了密码-

代码语言:javascript
复制
app.collectionViews.otherElements.containing(.textField, identifier:"StoryboardTitleTextField").children(matching: .collectionView).element.tap().

但这段代码也不起作用。那我该怎么解决呢?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-27 14:02:22

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

问题是

代码语言:javascript
复制
 app.collectionViews.collectionViews.cells.images.element(boundBy: 0).isHittable is returning false. 

这就是为什么默认的tap()方法不适用于分层元素。

我刚做了下面的程序,效果很好。

步骤1:创建如下所示的扩展

代码语言:javascript
复制
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:使用上面创建的实例方法单击元素,而不是使用直接tap()方法。

代码语言:javascript
复制
app.collectionViews.collectionViews.cells.images.element(boundBy: 0).tryClick()

注意:尝试使用

代码语言:javascript
复制
CGVector(dx:0.5, dy:0.5) or CGVector(dx:0.0, dy:0.0)

希望它能解决你的问题。对我来说就像一种魅力。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47268421

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档