我正在为一个iOS应用程序做UI测试。我不知道如何使用日期选择器的自动测试。现在我被困在试图找到日期选择器本身,以便我可以更改值。我已经搜索了很多关于这个问题的线索,但没有找到任何东西。如果任何人对此有任何见解,将不胜感激。谢谢!
mi7gmzs61#
首先,我建议您使用Xcode中的“Record UI Test”按钮来轻松地了解如何在UI Test中访问UIDatePicker。对于date模式下的简单UIDatePicker,更改日期非常简单:
UIDatePicker
date
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,则可以检查标签中的文本是否已正确更新。
UILabel
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")
qlvxas9a3#
最后,我放弃了,因为所有的解决方案都是片状的,取决于设备的区域和日期。然后我自己想:为什么要测试整个UI元素?如果你需要在流程中的某个地方更改日期,你最好这样做:1.添加2个Button,一个使用goForward SFSymbol,一个使用goBackwards。1.使用DatePickers将它们添加到视图中,并由#if DEBUG语句包围1.当用户按下其中一个按钮时,按预定义的静态值增加/减少DatePicker。这样,您仍然可以测试不同的日期,但不会再进行不稳定的测试。
Button
goForward
goBackwards
#if DEBUG
DatePicker
3条答案
按热度按时间mi7gmzs61#
首先,我建议您使用Xcode中的“Record UI Test”按钮来轻松地了解如何在UI Test中访问
UIDatePicker
。对于
date
模式下的简单UIDatePicker
,更改日期非常简单:如果datePicker连接到
UILabel
,则可以检查标签中的文本是否已正确更新。ss2ws0br2#
对于任何人来说,支持多个本地化,更简单的方法是
qlvxas9a3#
最后,我放弃了,因为所有的解决方案都是片状的,取决于设备的区域和日期。然后我自己想:为什么要测试整个UI元素?如果你需要在流程中的某个地方更改日期,你最好这样做:
1.添加2个
Button
,一个使用goForward
SFSymbol,一个使用goBackwards
。1.使用DatePickers将它们添加到视图中,并由
#if DEBUG
语句包围1.当用户按下其中一个按钮时,按预定义的静态值增加/减少
DatePicker
。这样,您仍然可以测试不同的日期,但不会再进行不稳定的测试。