【问题标题】:How to access back bar button item in universal way under UITests in Xcode?如何在 Xcode 中的 UITests 下以通用方式访问返回栏按钮项?
【发布时间】:2016-11-30 10:02:22
【问题描述】:

问题是当我尝试访问返回栏按钮项时,因为它显示为:

  • Restaurants标题,
  • Back标题
  • 没有标题

就像在屏幕上一样:

目前我这样访问它:

let backButton = XCUIApplication().buttons["Restaurants"]

但它不适用于其他情况。这不是通用的方式。我可以以某种方式设置它accessibilityIdentifier 或其他东西吗?

【问题讨论】:

  • 设置可访问性标识符是最可靠的方法,因为它可以让您独立于标签文本。

标签: ios swift xcode-ui-testing


【解决方案1】:

通常,后退按钮往往是导航栏中的第一个按钮元素

app.navigationBars.buttons.element(boundBy: 0).tap()

【讨论】:

  • 您还可以在创建后退按钮时添加一个accessibilityIdentifier(例如backButton.accessibilityIdentifier = "back"),然后您只需执行app.buttons["back"].tap()
  • 如果没有返回按钮,而另一个按钮将被点击怎么办?效果不好...需要分配标识符
【解决方案2】:

根据Aaron Sofaers 的注释,您也可以直接在Interface Builder 中设置accessibilityIdentifier

【讨论】:

  • 你可以为 backBarButtonItem 做这个吗?
  • 当您在故事板/xib 中创建它时,您应该可以这样做。
  • 啊,但不是以编程方式?
  • 我不认为,您可以在 Interface Builder 中访问以编程方式创建的按钮?!
  • 我的意思是,如果我以编程方式创建按钮并以编程方式设置accessibilityIdentifier。我试过了,但没有用。
【解决方案3】:

您可以在 Swift 3 中做到这一点:

app.navigationBars.buttons.element(boundBy: 0).tap()

【讨论】:

    【解决方案4】:

    目标-C:

        [[app.navigationBars.buttons elementBoundByIndex:0] tap];
    

    【讨论】:

      猜你喜欢
      • 2011-11-30
      • 1970-01-01
      • 2010-12-20
      • 1970-01-01
      • 2015-11-13
      • 2015-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多