无法获得UIAStaticText的价值?

Mda*_*daG 13 javascript ios xcode4 ios-ui-automation

我试图访问value()UIAStaticText(一个UILabel在客观C代码)JavaScript对象.我可以设置好的值setValue(),我可以确认模拟器更新文本,但当我尝试获取值时,我只能得到null.

text.setValue("new text");
Run Code Online (Sandbox Code Playgroud)

将标签更新为模拟器中的"新文本".

text.value()
Run Code Online (Sandbox Code Playgroud)

null在设置值后仍然返回.

我在这做错了什么?

小智 15

看起来问题的根源在于返回的accessibilityValue属性,而不是应该的文本.要解决此问题,我在自定义类别中覆盖属性.UILabelaccessibilityLabelUILabelaccessibilityValueUILabel

@interface UILabel (MyAccessibility)
@property(nonatomic, copy) NSString *accessibilityValue;
@end


@implementation UILabel (MyAccessibility)

@dynamic accessibilityValue;

-(NSString *)accessibilityValue {
    // Here we force UIKit to return Label value, not the accessibility label 
    return self.text;
}

@end
Run Code Online (Sandbox Code Playgroud)

除了这个小技巧,我总是尝试使用辅助功能标识符而不是辅助功能标签来准备我的UI元素以进行自动化测试.查看" 仪器新功能用户指南 "的"辅助功能标签和标识符属性"部分.


Jon*_*man 12

经过几个小时的搜索和尝试后,我在O'Reilly Answers上发现了这一点,确认有一个错误,你无法使用Apple的UIAutomation框架获得静态文本标签的值.这是引用:

UILabel的文本标签字符串显示为StaticText字段的名称,而不是它的值,它始终为nil.如果设置"辅助功能"标签,它将成为名称属性,并且无法再以任何方式发现UILabel中的当前文本.我有一个与Apple公开的错误报告.