我使用Subliminal测试应用。一个屏幕使用带有多行项目的UITableView。我喜欢潜意识,能够找到特定行的详细披露按钮,然后拨打'点击'方法
我遇到的问题是详细的披露按钮不是通过这样的简单调用返回的:
NSString *label=@"More info, row label";
SLElement *e=[SLElement elementWithAccessibilityLabel:label];
SLAssertTrueWithTimeout([e isValidAndVisible],5.0f,@"Not visible");
[e tap]; //fails assertion above
假设"行标签"对应于UITableViewCell标签对象中的标题。
这不会传递' isValidAndVisible'检查。
我已通过使用辅助功能检查器确认标签标题是正确的,并且还通过聆听在iPad上读取的实际VoiceOver语音来确认。所以这个按钮确实可以访问。
我有什么简单的遗失吗?是否有更好的方法让Subliminal选择UITableViewCell的披露图标?我不能仅仅依靠点击这里的行,我需要专门测试点击披露图标。
谢谢!
编辑: 为@JeffreyWear
添加了这个我输出了您请求的跟踪输出的相关区域。对不起,我是新来的,所以我不确定如何创建一个测试用例供您检查/使用,这将是一般用途。
<UITableView: 0xd268e00; frame = (0 75; 768 894); label = 'Empty list
<UITableViewCellAccessibilityElement: 0xbd0a290; frame = (0 75; 768 44)>
<UITableTextAccessibilityElement: 0x1292f620; frame = (0 75; 711 44); label = 'Document. PURHWE'; traits = (Static Text); accessibilityElement = YES>
<UIAccessibilityElementMockView: 0x1293c060; frame = (711 86; 42 22); label = 'More info, Document. PURHWE'; accessibilityElement = YES>
因此,为了获得此控制而运行的实际代码是:
SLElement *btn=[SLElement elementWithAccessibilityIdentifier:@"More Info, Document. PURHWE"];
[btn logElement];
SLAssertTrueWithTimeout([btn isValidAndVisible], 5.0f, @"Not visible.");
logElement的输出:
Unexpected exception occurred ***SLUIAElementInvalidException*** for reason: Element '<SLElement description:"More info, Document. PURHWE">' does not exist.
我认为您可以在日志跟踪中看到此元素确实存在,并标记为可访问。
<UIAccessibilityElementMockView: 0x1293c060; frame = (711 86; 42 22); label = 'More info, Document. PURHWE'; accessibilityElement = YES>
我应该注意到,作为一般可访问性改进的一部分,我们添加了“#34; Document&#34;对于标签,因为列表可以显示许多不同类型的对象,视障用户会知道这个特定的行代表文档(而不是&#39;文件夹&#39;等等...)
解决
我使用了不正确的方法来获取对象。我错误地使用了&#39; elementWithAccessibilityIdentifier&#39;而不是&#39; elementWithAccessibilityLabel&#39;。