我发现,即使我可以设置UISegmentedControl的段的accessibilityLabel(参见:
How do I set the accesibility label for a particular segment of a UISegmentedControl?),我也无法设置accessibilityIdentifier,这对我的项目同样重要.出于自动化目的,我需要针对一个段而不管其文本和accessibilityLabel.
例如,代码:
Nsstring *name = [Nsstring stringWithFormat:@"Item %li",(long)idx]; segment.accessibilityIdentifier = name; NSLog(@"ID: %@",segment.accessibilityIdentifier);
结果是:
ID: (null)
没有异常被抛出.
有没有人深入了解为什么要实现accessibilityLabel,而不是accessibilityIdentifier?
解决方法
我通过为XCUIElement编写Swift扩展来解决这个问题,该扩展添加了一个新方法tap(at:UInt).此方法获取元素的按钮查询,并根据其x位置对结果进行排序.这允许我们指定我们想要点击的UISegmentedControl的哪个段而不是依赖于按钮文本.
extension XCUIElement { func tap(at index: UInt) { guard buttons.count > 0 else { return } var segments = (0..<buttons.count).map { buttons.element(boundBy: $0) } segments.sort { $0.0.frame.origin.x < $0.1.frame.origin.x } segments[Int(index)].tap() } }
原文地址:https://www.jb51.cc/iOS/334273.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。