我也在另一個問題上發佈了這個。您可以將選取器中的值的數量設爲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工作。
使用此方法,您一次將值選擇器移動到值上。多次撥打電話,即可獲得所需的價值。
它並不理想,但它可以幫助您檢查某些索引。希望你不得不在一個有數百個值的選擇器上使用它)
這可能不是最好的解決方案,但我做的是通過一些垃圾值adjustToPickerWheelValue(「垃圾」),與此測試將失敗和控制檯打印錯誤 - UI測試失敗 - 請求調整爲值'垃圾',這不是可能的值黃色,紅色等等的選取輪。 使用這些值,您可以在測試中創建一個靜態數組,並在測試中使用這些值。 – Sandy
@Sandy謝謝..但我想要更乾淨的東西..但似乎這是不可能的,所以很可惜我需要堅持標籤然後。 –