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

问题描述:

我在我的应用程序上有一个UIPickerView,有一个值列表,我们可以使用颜色。拾取器只有一个轮子,我设法通过使用此代码来选择值:如何在iOS UITest上获取pickerWheels的所有可能值?

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

但我想要做的,就是以一个数组这轮的所有可能的值,这样我就可以使用要在选取器中选择的数组值。

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

+0

这可能不是最好的解决方案,但我做的是通过一些垃圾值adjustToPickerWheelValue(“垃圾”),与此测试将失败和控制台打印错误 - UI测试失败 - 请求调整为值'垃圾',这不是可能的值黄色,红色等等的选取轮。 使用这些值,您可以在测试中创建一个静态数组,并在测试中使用这些值。 – Sandy

+0

@Sandy谢谢..但我想要更干净的东西..但似乎这是不可能的,所以很可惜我需要坚持标签然后。 –

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

让我知道,如果你有一些问题...

解决方法:

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 
    } 

您可能需要根据在选择器是调整DX值。

.coordinateWithNormalizedOffset(CGVector(dx: 0.5, 

但是,如果选取器占用屏幕宽度,则0.5工作。

使用此方法,您一次将值选择器移动到值上。多次拨打电话,即可获得所需的价值。

它并不理想,但它可以帮助您检查某些索引。希望你不得不在一个有数百个值的选择器上使用它)