「赤」、「緑」、「黄」、「黒」のいくつかのアイテムを含むピッカービューがあります。 UIテストでは、特定の項目「Green」を選択する必要があります。 Xcode 7で侵入されたAPIをテストするXCTest UIを使用しています。
これまで何とかできたのは、単体テストでピッカービュー全体を上にスワイプすることです。ピッカービューを常に下のアイテムに変更する(上にスワイプする)ため、理想的ではありません。
let app = XCUIApplication()
app.launch()
app.pickers.elementAtIndex(0).swipeUp()
XCTAssert(app.staticTexts["Selected: Black"].exists)
ピッカービューを変更するもう1つの非常によく似た方法は、pressForDuration ... thenDragToElement
、これは私が望むものではありません。
app.pickers.elementAtIndex(0).pressForDuration(0.1, thenDragToElement: someElement)
UIテストrecord関数を使用すると、ピッカービューのスクロールイベントは記録されません。ピッカービューアイテムをタップすると記録されます。
app.pickerWheels["Green"].tap()
ただし、テストの実行時には実際には機能しません(おそらく、タップする前に最初にピッカービューをスクロールする必要があるためです)。
これがテスト付きのデモアプリです。
https://github.com/exchangegroup/PickerViewTestDemo
Xcode 7.0 beta 6以降、ピッカービューを選択できるようになりました。
app.pickerWheels["Green"].adjustToPickerWheelValue("Yellow")
質問の更新で述べたように、Xcode 7 Beta 6ではピッカーとの対話のサポートが追加されました。新しく追加されたメソッド-adjustToPickerWheelValue:
は、UIPickerView
の項目を選択するために使用する必要があります。
let app = XCUIApplication()
app.launch()
app.pickerWheels.element.adjustToPickerWheelValue("Yellow")
GitHubリポジトリと実例を使用 です。そして、いくつかの 私が書いたブログ投稿の詳細 。
複数のホイールがある場合、アイテムを選択する簡単な方法は次のとおりです。
前提条件:日付ピッカー(UIDatePicker)、Swift language
app.pickerWheels.elementBoundByIndex(0).adjustToPickerWheelValue("March")
app.pickerWheels.elementBoundByIndex(1).adjustToPickerWheelValue("13")
app.pickerWheels.elementBoundByIndex(2).adjustToPickerWheelValue("1990")
ここで、インデックス「0」は月、「1」は日、「2」は年です
@ Joao_dcheの答えのSwift 4バージョン
app.pickerWheels.element(boundBy: 0).adjust(toPickerWheelValue: "March")
app.pickerWheels.element(boundBy: 1).adjust(toPickerWheelValue: "13")
app.pickerWheels.element(boundBy: 2).adjust(toPickerWheelValue: "1990")
Objective-C@ Joao_dcheの回答のバージョン
UIテストのためにXCTestでUIDatePickerを使用する:
XCUIElementQuery *datePickersQuery = app.datePickers;
[datePickersQuery.pickerWheels.allElementsBoundByIndex[0] adjustToPickerWheelValue:@"May"];
[datePickersQuery.pickerWheels.allElementsBoundByIndex[1] adjustToPickerWheelValue:@"13"];
[datePickersQuery.pickerWheels.allElementsBoundByIndex[2] adjustToPickerWheelValue:@"2017"];
XCUIElement *doneButton = app.buttons[@"Done"];
[doneButton.firstMatch tap];
これは、select pickervie(UIPickerView)の最も人気のある投稿の1つです。
ピッカービューから状態/日付を選択する場合。次のSwift 3コードを試してください。
XCUIApplication().tables.pickerWheels["AK"].adjust(toPickerWheelValue: "MA")
PickerWheelsはAKから選択し、ターゲット状態を設定します。
XCUIApplication()。tables.pickerWheels [ "Starting Point" "] .adjust(toPickerWheelValue:"Target Place ")
Joeの答え iOS 11ではうまく動作しますが、iOS 10.3.1では動作しません[Xcode 9.2]
私はピッカー行としてカスタムビュー(実際にはラベル)を使用し、残念ながらゴージャスなJoeの答えは機能しません iOS 10.3.1の私にとってはiOS 11で完全に動作しますiOS 11で
app.pickerWheels["X, Y of Z"].swipeUp()
どこで
X is my label's text.
Y is row position in picker view. Position number starts with 1, not zero.
Z is number of values in picker view.
だから私の場合、このコマンドは次のようになります
app.pickerWheels["1st, 1 of 28"].swipeUp()
以下のコードを使用して、ピッカーホイールに現在表示されている要素を識別しました。
let valueSelected = algorithmsPicker.pickerWheels.element(boundBy: 0).value as! String
algorithmsPicker.pickerWheels[valueSelected].adjust(toPickerWheelValue: "BubbleSort")