如何在 Xcode 7.2 XCTestCase 中获取滚动视图的标签?

Posted

技术标签:

【中文标题】如何在 Xcode 7.2 XCTestCase 中获取滚动视图的标签?【英文标题】:How can I get the label for a scroll view in a Xcode 7.2 XCTestCase? 【发布时间】:2016-09-28 20:55:09 【问题描述】:

在 XCode 7.2 中,如果我可以得到 XCUIApplication().scrollViews["Foo"].otherElements.otherElements["Page Title"],那么可以说“给我这个名为“Foo”的 scrollView 的页面标题“?”

我已尝试询问accessibilityLabel 和staticTexts。

我已尝试将 XCUIApplication().scrollViews["Foo"]、XCUIApplication().scrollViews["Foo"].otherElements 等添加到我的监视列表中,但我没有看到任何有用的信息。

当我对XCUIApplication().scrollViews["Foo"].otherElements 执行po 时,我得到:

<snip>
↪︎Find: Descendants matching type Other
Output: 
      Other 0x7f904b60e910: traits: 8589934592, 0.0, 0.0, 768.0, 1024.0, label: 'PDF article'
      Other 0x7f9049efb6e0: traits: 8589934592, 0.0, 0.0, 768.0, 1024.0
    

(本例中的页面标题为“PDF 文章”)

所以我觉得我至少应该可以使用 staticTexts 访问它。

【问题讨论】:

【参考方案1】:

看起来您的页面标题是一个不继承自 UILabel 的自定义视图(UILabel 后代被标记为 StaticTexts)。

您需要在应用代码中的页面标题上设置可访问性标识符(不是标签)。

pageTitle.accessibilityIdentifier = "Page Title"

这应该使您的代码正常工作,并且是最佳实践。

或者,如果您将搜索链更改为使用标签的值而不是 "Page Title",那也应该可以。但是,如果您打开具有不同标题的不同页面,这将不起作用。

XCUIApplication().scrollViews["Foo"].otherElements["PDF article"]

【讨论】:

以上是关于如何在 Xcode 7.2 XCTestCase 中获取滚动视图的标签?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 XCTestCase 测试异步代码

是否有任何方便的方法可以在 Xcode 中枚举和调用 XCTestCase 类的测试?

Xcode XCTestCase 根本不运行

XCTestCase 与 Pure Swift 类

如何在 Xcode 7.2 中创建类别? [复制]

如何在构建设置中从 xcode 7.2 中删除配置文件