【问题标题】:How to wait for UI element without failing test case如何在不失败测试用例的情况下等待 UI 元素
【发布时间】:2017-02-20 16:09:11
【问题描述】:

我的应用程序首次执行时会显示一个对话框。因此,我希望我的测试用例能够处理对对话框的响应——但前提是它出现了。

如果超时,waitForExpectations 方法会报错。

如果该元素没有出现,那么等待该元素出现一小段时间而不使测试用例失败的最佳方法是什么?

【问题讨论】:

  • 如果对话框只在应用第一次执行时出现,为什么不也只在应用第一次执行时使用测试逻辑呢?
  • 我怎么知道这是应用程序的第一次执行?

标签: ios swift xcode xcode-ui-testing


【解决方案1】:

试试下面的代码:

addUIInterruptionMonitorWithDescription("SYSTEM_DESCRIPTION") { (alert) -> Bool in
  alert.buttons["BUTTON_TITLE"].tap()
  return true
}

app.buttons["BUTTON_TITLE"].tap()
app.tap() 

SYSTEM_DESCRIPTION 是系统警报的标题或描述。

BUTTON_TITLE 类似于“OK”、“Allow”、...

在此答案中了解更多信息: https://stackoverflow.com/a/32228033/6657951

【讨论】:

    【解决方案2】:

    您将不得不重新实现等待。尽管听起来很糟糕,但我建议使用 Sleep 和 If 语句;您希望在等待应用完成呈现内容并进行评估时锁定测试线程。

    不幸的是,据我所知,waitForExpectationsWithTimeout 的任何选项都不允许您在超时时间结束时未满足expectationForPredicate 时不通过测试。

    【讨论】:

      猜你喜欢
      • 2014-06-23
      • 1970-01-01
      • 1970-01-01
      • 2019-01-03
      • 1970-01-01
      • 2015-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多