我正在努力修复iOS 14的UI测试,这些测试在DatePicker视图上设置日期。它们以前在iOS 13上运行时没有任何问题,当时它们显示为车轮拾取器。我的代码用于设置不同的车轮,但由于iOS 14上不再有任何车轮,这不再起作用了。
我尝试使用一个小的演示项目,并使用XCode 12记录按钮记录日期的更改,但它不起作用(在Mac OS 10.15.6上),因为在按下日期按钮后出现错误:“时间戳事件匹配错误:未能找到匹配元素”。
我正在寻找的是一个UI测试用例,用于为iOS 14的新日期选择器设置日期:
的数据
以下是我的Demo项目:
import SwiftUI
struct ContentView: View {
@State private var date = Date()
var body: some View {
Form {
DatePicker(selection: $date, displayedComponents: .date) {
Text("Date")
}
}
}
}
字符串
2条答案
按热度按时间4si2a6ki1#
问题只是如何在展开的选择器外部点击 * 来关闭它。你可以通过简单的点击来做到这一点,你可以使用扩展来模拟:
字符串
这里有一个基于记录的有点天真的方法;您可以根据需要清理它:
型
当然,这只适用于 * 今天 *。但它会让你去。
如果你想 * 看到 * 解除水龙头工作,添加一个延迟:
型
您将看到扩展的选择器确实在测试结束之前就关闭了。
b1uwtaje2#
Matt's answer可能在iOS 14设备上工作,但在iOS 15.2和更新的设备上对我不起作用。我面临的问题是,没有关闭弹出式窗口。经过几个小时的尝试和错误,我发现关闭弹出式窗口的代码与显示它的代码相同。
在我的例子中,我在应用程序中声明了
DatePicker
,如下所示:字符串
然后,在我的UI测试中,我执行以下操作:
型
我已经制作了一个最小的SwiftUI应用程序来演示这个here。