如何在iOS UITest上获取pickerWheels的所有可能值?

时间:2015-11-21 11:31:32

标签: ios uipickerview xcode-ui-testing

我的应用程序上有一个UIPickerView,有一个值列表,我们可以使用Colors。选择器只有一个轮子,我设法通过使用以下代码选择值:

let app = XCUIApplication()
app.launch()
app.pickerWheels.element.adjustToPickerWheelValue("Yellow")

但我想要做的是在数组中获取此轮的所有可能值,因此我可以使用数组值在选择器中进行选择。

另一个好的解决方案是通过索引而不是按键进行选择,但我找不到这样做的方法。有人?

1 个答案:

答案 0 :(得分:0)

我也在另一个问题上发布了这个问题。您可以将选取器中的值数量设为x,然后将此函数调用x次。当值更新选择器关联的单元格时,您可以从那里获取值以将其添加到数组中。

如果您有疑问,请告诉我......

解决方法:

var image = ImageSourceModule.fromNativeSource(a);
var base64 = image.toBase64String('png');

您可能需要根据选择器的位置调整dx值。

let pickerWheel = XCUIApplication().pickers.pickerWheels.element
let appWindowHeight = XCUIApplication().windows.elementBoundByIndex(0).frame.height
let pickerWheelCellHeight = GFloat(44)
    func advancePickerWheelOneValue() -> Self {
         let topScrollPoint = Double(pickerWheel.frame.midY/appWindowHeight)
         let bottomScrollPoint = Double((pickerWheel.frame.midY + pickerWheelCellHeight)/appWindowHeight)
         let topScreenPoint = XCUIApplication().windows.elementBoundByIndex(0).coordinateWithNormalizedOffset(CGVector(dx: 0.5, dy: topScrollPoint))
         let bottomScreenPoint = XCUIApplication().windows.elementBoundByIndex(0).coordinateWithNormalizedOffset(CGVector(dx: 0.5, dy: bottomScrollPoint))
         bottomScreenPoint.pressForDuration(0, thenDragToCoordinate: topScreenPoint)
         return self
    }

但是如果选择器占据屏幕的宽度,则0.5可以工作。

使用此方法,您可以一次移动选择器的值。多次调用它,你就可以得到你想要的值。

它不理想但如果你想检查某些索引它会有所帮助。希望你必须在具有数百个值的选择器上使用它;)