当它不是可访问性元素时,是不是可以通过其 `accessibilityId` 获取`XCUIElement`?

Posted

技术标签:

【中文标题】当它不是可访问性元素时,是不是可以通过其 `accessibilityId` 获取`XCUIElement`?【英文标题】:Is it possible to get an `XCUIElement` by its `accessibilityId` when it is not an accessibility element?当它不是可访问性元素时,是否可以通过其 `accessibilityId` 获取`XCUIElement`? 【发布时间】:2020-08-20 18:57:58 【问题描述】:

我有自定义UITableViewCell 带有一些子图像和标签。我已将整个单元格作为一个可访问的元素。我已经为所有元素设置了可访问性 ID - 单元格及其子视图,希望能够在 XCUITests 中使用它。

现在,我无法使用XCUIApplication().images["cell_image_acc_id"] 获取图像。

我应该怎么做才能获得这些元素?我是 XC ui 测试的新手。如果我缺少一些基本的东西,请告诉我。

提前致谢。

【问题讨论】:

【参考方案1】:

如果您将视图设置为可访问性元素,则其子视图对 VoiceOver 用户不可用,因此无法测试。虽然它对可访问性用户有好处,但可能会影响可测试性。

您可以在测试时为您的应用传递环境变量或启动参数。如果设置了此类变量(或参数),请不要在您的应用代码中设置 isAccessibilityElement。 https://developer.apple.com/documentation/objectivec/nsobject/1615141-isaccessibilityelement https://developer.apple.com/documentation/xctest/xcuiapplication/1500477-launcharguments https://developer.apple.com/documentation/xctest/xcuiapplication/1500427-launchenvironment How to detect if ios app is running in UI Testing mode

这样,您仍然可以为 VoiceOver 用户提供出色的体验并正确测试您的代码。

【讨论】:

以上是关于当它不是可访问性元素时,是不是可以通过其 `accessibilityId` 获取`XCUIElement`?的主要内容,如果未能解决你的问题,请参考以下文章

JVM/Java,是不是在运行时强制执行方法可访问性规则?

当许多连接同时访问远程数据库的单个实例时,连接池是不是会导致任何可访问性问题

我能否为单个 UI 元素提供多个辅助功能 ID?

在自动化测试中没有出现 iOS 可访问性元素的原因是啥?

shell脚本——爬取域名一级页面元素并判断其可缓存性

如何在其 isAccessibilityElement = false 时禁用元素的可访问性焦点