0

我正在使用 Subliminal 来测试一个应用程序。一个屏幕使用带有项目行的 UITableView。我希望 Subliminal 能够找到特定行的详细披露按钮,然后调用“点击”方法。

我遇到的问题是详细的披露按钮不是通过这样的简单调用返回的:

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>

我应该注意到,作为一般可访问性改进的一部分,我们在标签中添加了“文档”一词,因为列表可以显示许多不同类型的对象,视障用户会知道这个特定的行代表一个文档(而不是一个“文件夹”等...)

解析度

我使用了不正确的方法来获取对象。我错误地使用了“elementWithAccessibilityIdentifier”而不是“elementWithAccessibilityLabel”。

4

0 回答 0