我可以翻译您的请求。问题是:我能在界面构建器中设置可访问标识符吗?Xcode4.2

27

我只能在界面构建器中设置无障碍标签,但在UI自动化中,我需要无障碍标识来获取UI元素。有什么方法可以做到这一点吗?

5个回答

63

通过使用“Identity Inspector”选项卡中的“用户定义的运行时属性”,可以在IB中设置accessibilityIndentifier:

关键路径:accessibilityIdentifier

类型:字符串

值:所选的accessibilityIdentifier文本

例如,将滚动视图设置为具有accessibility ID“ScrollView”: 来自Xcode 8.3.2的图像

请注意:这仅可用于具有accessibilityIdentifier属性的项目,这意味着它们继承自UIView。 此外,“Key Path”中的拼写错误可能会导致加载项目时出现异常,我不认为会给出编译警告/错误。


4
这是最好的答案,因为accessibilityLabel是面向用户的构造,不会被编程细节所污染。 - David Hunt
我同意,这是最好的答案! - Vincil Bishop
为什么这不能用于UIViewController? - jungledev

11
在Xcode 7.1(iOS 9.0)中,您可以尽可能简单地完成此操作。请查看附图。输入图像描述 您可以直接访问它,如view.accessibilityIdentifier所示。

1
对我不起作用,我必须使用Joseph的答案 https://dev59.com/eGsz5IYBdhLWcg3wcXTF#13870658 - Xcode7.2.1/iOS8 - Crazyrems
实际上我已经测试过9.0.1版本。 - Crazyrems
同意:尽管看起来使用accessibilityIdentifier与UI测试不起作用,但使用用户定义的属性(@Joseph的答案)确实有效。 - Ali Beadle

5
根据此页面

http://developer.apple.com/library/ios/#documentation/AnalysisTools/Conceptual/WhatsNewInstruments/NewFeatures42/NewFeatures42.html

UIAutomation将使用accessibilityLabel,如果没有设置accessibilityIdentifier,因此您可以暂时使用它。但这可能不是最佳实践,因为如果用户使用VoiceOver,accessibilityLabel对用户可见(或听到)。只要您给标签命名与人类相关的含义,那么就可以使用它。
希望苹果在未来添加一种在IB中设置accessibilityIdentifier的方法,但现在您必须在代码中设置它,或使用其他东西(如视图标记)来定位自动化视图。


0

我在想,你是否想测试没有IBOutlet的xib中的东西?有经验的人能否分享一下他/她的想法?

这是我的看法。 如果您不将IBOutlet分配给按钮/标签/文本框或任何其他控件,则意味着您无法从代码中更改它。该控件将是静态的,并且您可以在Interface Builder中看到它。 如果您向控件添加了IBOutlet,则可以从代码中添加accessibilityIdentifier。


我需要进行UI自动化,需要使用辅助功能ID。 - CarmeloS

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接