2016-06-29 22 views
4

Ich habe eine Auswahlansicht mit einer Datumsauswahl, die in Interface Builder erstellt wurde. Im Informations-Inspektor ist ausgewählt: Modus "Datum und Uhrzeit". In meinem UI-Test muss ich einen bestimmten Datum und Uhrzeit von ihm auswählen. Ich verwende die XCTest UI Test-APIs, die mit Xcode 7.Auswählen eines lokalisierten Datumsauswahlelements in einem iOS-UI-Test

Mein Test-Code für eine lokalisierte Vereinigte Staaten Datum und Uhrzeit Picker sieht aus wie das intruduced wurden:

app.tables.pickerWheels.elementBoundByIndex(0).adjustToPickerWheelValue("Jun 29") 
app.tables.pickerWheels.elementBoundByIndex(1).adjustToPickerWheelValue("12") 
app.tables.pickerWheels.elementBoundByIndex(2).adjustToPickerWheelValue("10") 
app.tables.pickerWheels.elementBoundByIndex(3).adjustToPickerWheelValue("PM") 

, die perfekt funktioniert!

Mein Code Test für eine lokalisierte Deutsch Datum und Uhrzeit Picker dass wie folgt aussieht:

app.tables.pickerWheels.elementBoundByIndex(0).adjustToPickerWheelValue("29. Juni") 
app.tables.pickerWheels.elementBoundByIndex(1).adjustToPickerWheelValue("07") 
app.tables.pickerWheels.elementBoundByIndex(2).adjustToPickerWheelValue("10") 

in diesem Fall habe ich folgende Ausnahme wurde:

Assertionsfehler: UI Test Failure - Interner Fehler: aktueller Wert nicht möglich '(null)' in möglichen Werten 11. Mai, 12. Mai, 13. Mai, 14. Mai, 15. Mai, 16. Mai, 17. Mai, 18. Mai, 19. Mai , 20. Mai, 21. Mai, 22. Mai, 23. Mai, 24. Mai, 25. Mai, 26. Mai, 27. Mai, 28. Mai, 29. Mai, 30. Mai, 31. Mai, 1 Jun i, 2. Juni, 3. Juni, 4. Juni, 5. Juni, 6. Juni, 7. Juni, 8. Juni, 9. Juni, 10. Juni, 11. Juni, 12. Juni, 13. Juni, 14. Juni, 15. Juni, 16. Juni, 17. Juni, 18. Juni, 19. Juni, 20. Juni, 21. Juni, 22. Juni, 23. Juni, 24. Juni, 25. Juni, 26. Juni, 27. Juni, 28. Juni, 29. Juni, 30. Juni, 1. Juli, 2. Juli, 3. Juli, 4. Juli, 5. Juli, 6. Juli, 7. Juli, 8. Juli, 9. Juli, 10. Juli, 11. Juli, 12. Juli, 13. Juli, 14. Juli, 15. Juli, 16. Juli, 17. Juli, 18. Juli, 19. Juli, 20. Juli, 21. Juli, 22. Juli, 23. Juli, 24. Juli, 25. Juli, 26. Juli, 27. Juli, 28. Juli, 29. Juli, 30. Juli, 31. Juli, 1. August, 2 Aug., 3. Aug., 4. Aug., 5. Aug., 6. Aug., 7. Aug., 8. Aug., 9. Aug., 10. Aug., 11. Aug., 12 Uhr Aug., 13. Aug., 14. Aug., 15. Aug., 16. Aug., 17. Aug., 18. Aug. für das Picker-Rad "Heute" PickerWheel

Ich nehme an, dass die ‚(null)‘ sagt, dass es kein Suchtext für die UITest Abfrage festgelegt ist:

app.tables.pickerWheels.elementBoundByIndex(0).adjustToPickerWheelValue("29. Juni") 

und dies ist der Grund für steigende diese Ausnahme.

Das beschriebene Problem wird nur angezeigt, wenn die Simulatoren Einstellungen „Allgemein/Sprache & Region“ nicht „Vereinigte Staaten“ auf Standard gesetzt.

Wenn ich auf andere Spracheinstellungen im Simulator zu wechseln, habe ich diese die gleichen Ergebnisse mit meinem eigenen SWIFT-Code oben als auch den Objective-C-Code in folgendem Posting genannt:

How to select a picker view item in an iOS UI test in Xcode?

I müssen auf jeden Fall meine UITestings mit einem lokalisierten Datum und Uhrzeit Picker durchführen! Hat jemand eine Idee, was läuft hier schief und ob es eine Lösung dafür gibt?

Antwort

0

Wahrscheinlich zu spät, aber das half mir aus

let dateComponent = Calendar.current.dateComponents([.day, .month, .year], from: Date()) 
let formatter = DateFormatter() 
formatter.dateFormat = "MMMM" 
let monthText = formatter.string(from: Date()) 

datePicker.pickerWheels[String(dateComponent.year!)].adjust(toPickerWheelValue: "2017") 
datePicker.pickerWheels[monthText].adjust(toPickerWheelValue: "December") 
datePicker.pickerWheels[String(dateComponent.day!)].adjust(toPickerWheelValue: "21")