【问题标题】:Locating element in Xcode UI Test without accessiblity id在没有可访问性 ID 的 Xcode UI 测试中定位元素
【发布时间】:2016-11-08 14:48:11
【问题描述】:

最近我开始学习 XCode UI Test,使用 Xcode 的 UI 测试功能编写功能自动化测试。

我需要读取原生应用元素的文本值。我可以在元素文本的帮助下获取元素,但问题是我不能使用文本,因为它是动态的,它会在一段时间或下次启动应用程序后更改。

我熟悉使用 WebDriver 和 Appium,我可以通过编写父子 xpath 来解决这个问题。

任何人都可以提出解决此问题的方法吗?请发布示例代码 sn-p 以及您的解决方案,因为我是苹果技术/swift 的新手。

感谢您的帮助。

【问题讨论】:

    标签: swift xcode xctest ios-ui-automation


    【解决方案1】:

    在您的应用代码中,为您要检查的元素添加一个可访问性标识符,然后使用该标识符在您的 UI 测试代码中查找该元素。

    // app code
    let myLabel = UILabel()
    myLabel.accessibilityIdentifier = "myDescriptionLabel"
    // add other label configuration...
    
    // UI test code
    let app = XCUIApplication()
    let descriptionLabel = app.staticTexts["myDescriptionLabel"]
    let description = descriptionLabel.value as String
    

    【讨论】:

    • 感谢您的回答,但问题是我不允许更改开发代码。并且有许多元素没有 accessiblityIdentifier。 (它是“空的”)所以只是试图找出任何其他方式。我知道我可以使用 decendentsMatching 或 containsg... 但 with 不是那么用户友好。我觉得特别是 Xpath 的 appium 定位器要好得多。
    • 您几乎可以做与 Xpath 相同的事情,尽管这是一种非常脆弱的技术,并且为了使您的应用程序可正确测试,开发人员确实应该花几分钟时间添加可访问性 ID。您可以使用 app.staticTexts.element(boundBy: 2) 之类的东西来获取屏幕上的第三个标签,或者通过视图层次结构缩小范围,例如,第二个表格单元格中的第一个标签:app.tables.element(boundBy: 0).cells.element(boundBy: 1).staticTexts.element(boundBy: 0)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-24
    • 2016-01-03
    • 2021-03-13
    • 2019-07-05
    • 2021-09-09
    • 1970-01-01
    • 2021-12-01
    相关资源
    最近更新 更多