2015-11-21 56 views
0

我在我的應用程序上有一個UIPickerView,有一個值列表,我們可以使用顏色。拾取器只有一個輪子,我設法通過使用此代碼來選擇值:如何在iOS UITest上獲取pickerWheels的所有可能值?

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

但我想要做的,就是以一個數組這輪的所有可能的值,這樣我就可以使用要在選取器中選擇的數組值。

另一個好的解決方案是按索引而不是按鍵進行選擇,但我找不到方法。有人?

+0

這可能不是最好的解決方案,但我做的是通過一些垃圾值adjustToPickerWheelValue(「垃圾」),與此測試將失敗和控制檯打印錯誤 - UI測試失敗 - 請求調整爲值'垃圾',這不是可能的值黃色,紅色等等的選取輪。 使用這些值,您可以在測試中創建一個靜態數組,並在測試中使用這些值。 – Sandy

+0

@Sandy謝謝..但我想要更乾淨的東西..但似乎這是不可能的,所以很可惜我需要堅持標籤然後。 –

回答

0

我也在另一個問題上發佈了這個。您可以將選取器中的值的數量設爲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工作。

使用此方法,您一次將值選擇器移動到值上。多次撥打電話,即可獲得所需的價值。

它並不理想,但它可以幫助您檢查某些索引。希望你不得不在一個有數百個值的選擇器上使用它)

相關問題