如何在iOS UItest中选择本地化的日期选择器项

Her*_*art 5 datetime datepicker ios swift uitest

我有一个选择器视图,其中包含在Interface Builder中创建的日期选择器。在“属性检查器”中选择:模式“ 日期和时间 ”。在我的UI测试中,我需要从中选择一个特定的日期和时间。我正在使用Xcode 7引入的XCTest UI测试API。

我针对美国本地化日期和时间选择器的测试代码如下所示:

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")
Run Code Online (Sandbox Code Playgroud)

会完美的工作!

我的本地化德语日期和时间选择器的测试代码如下所示:

app.tables.pickerWheels.elementBoundByIndex(0).adjustToPickerWheelValue("29. Juni")
app.tables.pickerWheels.elementBoundByIndex(1).adjustToPickerWheelValue("07")
app.tables.pickerWheels.elementBoundByIndex(2).adjustToPickerWheelValue("10")
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我得到以下异常:

断言失败:UI测试失败-内部错误:无法在可能的值中找到当前值'(null)'。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. Juni,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. Aug.,2. Aug.,3. Aug.,4. Aug.,5 8月6日8月7日8月8日9月8月10日8月11日8月12日8月13日8月14日8月15日。8月16日,8月17日,8月17日,8月18日的捡拾器轮“ Heute” PickerWheel

我假设'(null)'表示没有为UITest查询设置搜索字符串:

app.tables.pickerWheels.elementBoundByIndex(0).adjustToPickerWheelValue("29. Juni")
Run Code Online (Sandbox Code Playgroud)

这就是引发此异常的原因。

仅当模拟器首选项“ 常规/语言和地区 ”未设置为默认的“美国”时,才会出现上述问题。

当我在模拟器中切换到其他语言设置时,通过上面自己的快速代码以及以下发布中引用的Objective-C代码,我得到了相同的结果:

如何在Xcode的iOS UI测试中选择选择器视图项?

我绝对必须使用本地化的日期和时间选择器执行UITestings 是否有人有想法,这里出了什么问题,是否有解决的办法?

And*_*rew 3

可能为时已晚,但这帮助了我

 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")
Run Code Online (Sandbox Code Playgroud)