在某些情况下绕过 Swift 中的 UI 测试用例

Posted

技术标签:

【中文标题】在某些情况下绕过 Swift 中的 UI 测试用例【英文标题】:By pass UI TestCases in Swift for some cases 【发布时间】:2021-08-14 10:04:13 【问题描述】:

我正在 ios 中实现 UITestCases,但在实现权限时遇到了问题。进行一些操作。 只有授权的人才能进入应用程序的某些部分,如果警报打开,那么我们需要跳过UITestCases 进入下一页并跳转到其他UITestCases。 请查看应用截图。

  app.buttons["Fill out"].tap()

在这段代码之后,我需要检查警报是否可见,然后按下关闭按钮并跳过下面的代码

let textViewsQuery = app/*@START_MENU_TOKEN@*/.textViews/*[[".scrollViews.textViews",".textViews"],[[[-1,1],[-1,0]]],[0]]@END_MENU_TOKEN@*/
            textViewsQuery.otherElements["4. Test App"].doubleTap()
            let textView = app.scrollViews.children(matching: .textView).element
            textView.swipeDown()
            textView.children(matching: .textView).element(boundBy: 0).tap()
            app.navigationBars["Fill Out"].buttons["Back"].tap()

【问题讨论】:

【参考方案1】:

您需要添加一个检查此类警报的中断监视器。

 app.launch()
  addUIInterruptionMonitor(withDescription: "Permission Dialog") 
    (alert) -> Bool in
    alert.buttons["dismiss"].tap()
    return true
  
  app.tap()

【讨论】:

XCTSkipIf(_:_:file:line:)与上述中断监视器一起使用,以合理的理由跳过测试用例。

以上是关于在某些情况下绕过 Swift 中的 UI 测试用例的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Xcode 中的 UI 测试类的目标中包含 SwiftyUserDefaults.swift?

iOS/Swift 中的 UI 测试

在 Swift 3 UI 测试中访问自定义视图组件中的元素

如何在swift UI Test下检查应用程序状态

iOS - 如何区分 UI 和单元测试,以及如何在这种具体情况下使用它们?

在某些情况下可以使用 Thread.suspend() 吗?