- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
最近我很头疼(而且我仍在努力)找出如何检索 UIPickerWheel 中的所有值。对我来说应该足以在车轮的特定行移动,但我不能!太令人沮丧了!我试图逐行滚动以检索所有值(https://stackoverflow.com/a/39300344/821407),但速度太慢了!有什么线索吗?
注意:我不能使用 adjustToPickerWheelValue,因为我的根本问题是我不知道值,因为它们是动态的,我想避免使用 launchArguments/launchEnvironment。
最佳答案
这可能不是您希望得到的答案,但不可能在 UITest 中获取 UIPickerView
中所有行的标题。
如您所知,在运行 UITest 时,您只能通过 XCUIElement
类访问应用的 UI 元素。该类有一个 value
属性,可以为您提供有关您访问的 UI 元素的一些信息。当访问 UIPickerView
时,value
会为您提供当前所选行的标题。但仅限于选定的行。您可以访问选择器的行元素,但不幸的是,行元素的 value
属性始终为空。所以,这里没有运气。您所能获得的所有信息就是您的选择器的行数。
不过这并不奇怪。即使您可以访问 UIPickerView
,您也无法直接访问所有行的标题。 UIPickerView
不知道它显示的标题。 UIPickerViewDataSource
的工作是提供标题。
因此,不幸的是,如果您需要了解 UITest 中 UIPickerView
的所有行标题,您实际上必须通过应用的用户界面逐一选择每个值。
但它不必像您链接的答案中那样复杂。您可以简单地点击下一行来选择它(应该稍微快一些),而不是模拟滚动:
let pickerView = app.pickerWheels.element
let numRows = pickerView.children(matching: .any).count
var values: [String] = [pickerView.value as! String]
for _ in 0..<numRows {
pickerView.coordinate(withNormalizedOffset: CGVector(dx: 0.5, dy: 0.55)).tap()
values.append(pickerView.value as! String)
}
在您的问题中,您并没有真正描述您要测试的内容。但是,如果您想测试选择器是否具有正确的行标题,也许单元测试会是一种更实用的方法?
关于swift - UIPickerView 和 UI 单元测试 : How to get values of UIPickerWheel?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42307599/
我是一名优秀的程序员,十分优秀!