找不到带有SLElement的UITableViewCell详细披露按钮

时间:2014-08-11 22:51:13

标签: ios uitableview subliminal

我使用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;。

0 个答案:

没有答案