swift iOS UI测试日期选择器

bkhjykvo  于 2023-04-19  发布在  Swift
关注(0)|答案(3)|浏览(195)

我正在为一个iOS应用程序做UI测试。我不知道如何使用日期选择器的自动测试。现在我被困在试图找到日期选择器本身,以便我可以更改值。
我已经搜索了很多关于这个问题的线索,但没有找到任何东西。
如果任何人对此有任何见解,将不胜感激。谢谢!

mi7gmzs6

mi7gmzs61#

首先,我建议您使用Xcode中的“Record UI Test”按钮来轻松地了解如何在UI Test中访问UIDatePicker
对于date模式下的简单UIDatePicker,更改日期非常简单:

let datePickers = XCUIApplication().datePickers
datePickers.pickerWheels.element(boundBy: 0).adjust(toPickerWheelValue: "June")
datePickers.pickerWheels.element(boundBy: 1).adjust(toPickerWheelValue: "1")
datePickers.pickerWheels.element(boundBy: 2).adjust(toPickerWheelValue: "2015")

如果datePicker连接到UILabel,则可以检查标签中的文本是否已正确更新。

ss2ws0br

ss2ws0br2#

对于任何人来说,支持多个本地化,更简单的方法是

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")
qlvxas9a

qlvxas9a3#

最后,我放弃了,因为所有的解决方案都是片状的,取决于设备的区域和日期。然后我自己想:为什么要测试整个UI元素?如果你需要在流程中的某个地方更改日期,你最好这样做:
1.添加2个Button,一个使用goForward SFSymbol,一个使用goBackwards
1.使用DatePickers将它们添加到视图中,并由#if DEBUG语句包围
1.当用户按下其中一个按钮时,按预定义的静态值增加/减少DatePicker。这样,您仍然可以测试不同的日期,但不会再进行不稳定的测试。

相关问题