這可能不是您希望的答案,但不可能在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)
}
在你的問題,你真的不形容你想考什麼。但是如果你想測試一下picker是否有正確的行標題,那麼也許UnitTest會是一個更實用的方法?
感謝您的回答,我非常感謝。我解釋了我想測試的內容:UIPickerView位於搜索表單上,我必須點擊它,選擇一個隨機值並執行搜索,然後執行一些斷言。問題在於picker視圖中的值是動態的,所以我不提前知道這些值。我記得使用自動化儀器中的舊工具,您可以通過索引訪問特定的行。無論如何,我會接受你的回答,因爲是我所做的,但它仍然很慢。我希望他們能夠改進,我可以通過索引調整值 –