XCUITest - 打开 iOS 设置并更改日期/时间

Posted

技术标签:

【中文标题】XCUITest - 打开 iOS 设置并更改日期/时间【英文标题】:XCUITest - Open iOS settings and change date/time 【发布时间】:2020-01-24 23:33:32 【问题描述】:

是否可以在 UI 测试中更改设备的日期/时间设置?

我可以打开“设置”应用,导航到“常规”>“日期和时间”,然后关闭“自动设置”按钮。但是,我找不到更改pickerWheel 值的方法。

let settingsApp = XCUIApplication(bundleIdentifier: "com.apple.Preferences")
settingsApp.launch()
settingsApp.tables.cells["General"].tap()
settingsApp.tables.cells["Date & Time"].tap()
settingsApp.switches["Set Automatically"].tap()
// Change pickerWheel value?

有什么想法吗?有可能吗?

谢谢!

【问题讨论】:

【参考方案1】:

我使用下面的代码来做:

// Here I format the Time to get the right format
var decomposedDateTime: [String] = Formatters.timeFormatter.string(from: date)
            .replacingOccurrences(of: ":", with: " ")
            .split(separator: " ")
            .map(String($0))

// Then I format the Day and add it at first        
decomposedDateTime.insert(Formatters.datePickerFormatter.string(from: date), at: 0)

// Update picker wheels accordingly
for i in 0...(decomposedDateTime.count - 1) 
    settingsApp.pickerWheels.element(boundBy: i).adjust(toPickerWheelValue: decomposedDateTime[i])

这是我的格式化程序

static let timeFormatter: DateFormatter = 
    let f = DateFormatter()
    f.dateStyle = .none
    f.timeStyle = .short
    return f
()

static let datePickerFormatter: DateFormatter = 
    let f = DateFormatter()
    f.dateStyle = .medium
    f.dateFormat = "MMM d"
    return f
()

【讨论】:

非常感谢,这很有帮助!我仍然遇到 Xcode 似乎找不到运行 ios 12.3.1 和 Xcode 11 的 pickerWheel:No matches found for Descendants matching type PickerWheel 的问题。你能在“设置”应用中找到该元素吗? 您必须首先禁用Set Automatically 选项,然后单击最后一个单元格以显示PickerWheel。然后,您应该能够更新日期/时间 非常感谢!我所缺少的只是点击最后一个单元格......让它工作,再次感谢!

以上是关于XCUITest - 打开 iOS 设置并更改日期/时间的主要内容,如果未能解决你的问题,请参考以下文章

XCUITest 如何关闭日期选择器弹出框

使用 Cucumberish 在 XCUITest 设置中重置应用程序

iOS XCUITest 模拟指纹

Mac怎么修改系统时间和日期?苹果电脑对时间日期进行更改教程

怎么更改电脑日期格式

为啥 XCUITest 对 iOS 应用程序运行太慢?