【发布时间】:2017-11-01 23:53:23
【问题描述】:
在为具有多个 UIPickerViews 的视图控制器开发 Xcode UI 测试用例时,我遇到了几个错误,这些错误都与能够唯一地识别 XCUITest 中的选择器有关。
“应该”工作的是从情节提要中简单地设置可访问性标识符或可访问性标签,如下所示:
但这对于 UIPickerView 根本不起作用,尽管我验证了为 UIPickerView 设置了accessibilityLabel 和accessibilityIdentifier 属性。是的,我用一套或另一套或两套都试过了。我什至尝试以编程方式设置一个或另一个或两者。 XCUITest 案例中的以下行无论如何都无法找到选择器:
XCUIElement *shippingMethodPicker = app.pickerWheels[@"Shipping method"];
[shippingMethodPicker adjustToPickerWheelValue:@"USPS Media Mail"];
这似乎是一个已知问题,解决方案是使视图控制器也成为 UIPickerViewAccessibilityDelegate,并实现 - (NSString *)pickerView:(UIPickerView *)pickerView accessibilityLabelForComponent:(NSInteger)组件委托方法。
Apple API Documentation 似乎准确地描述了我们需要为每个pickerWheels 组件唯一地应用可访问性标签。
但这也有问题,pickerView 参数实际上不是 UIPickerView *,正如在此 stackoverflow 链接中引用的 Unable to get pickerView.tag in -pickerView:accessibilityLabelForComponent: method
由于委托方法的实现缺陷,您无法确定正在调用委托的哪个 UIPickerView 以使其对于具有多个选择器的视图无用。
由于情节提要方法存在错误,并且可访问性委托也存在错误,我无法从 XCUITest 测试用例中找到唯一标识视图控制器中的两个或多个 UIPickerView 的方法。
谁有解决办法?
【问题讨论】:
标签: objective-c xcode8 accessibility uipickerview xcode-ui-testing