Xamarin 为 UI 测试形成更改时间选择器值

Posted

技术标签:

【中文标题】Xamarin 为 UI 测试形成更改时间选择器值【英文标题】:Xamarin forms changing time picker value for UI test 【发布时间】:2017-12-19 19:32:21 【问题描述】:

在下面的时间选择器的 Xamarin 表单中

如何更改 xamarin UI 测试的时间选择器值。 我可以打开时间选择器,但不知道如何更改时间。 这是时间选择器的 app.Repl() 树的屏幕截图。

这是我尝试更改时间的尝试。

app.WaitForElement(c => c.Marked("hours"));
app.Tap(c => c.Marked("hours"));
app.EnterText(c => c.Marked("hours"), newHours) // errors can't pull up keyboard

【问题讨论】:

【参考方案1】:

我发现处理日期和时间控件的最简单方法是使用 Invoke 方法来访问暴露在时间/日期选择器控件中的后门。

// invokes a method to input the hour into the picker, time format is 24 hour
app.Query(c => c.Class("RadialTimePickerView").Invoke("setCurrentHour", (int)hour));

// invokes a method to input the minute into the picker
app.Query(c => c.Class("RadialTimePickerView").Invoke("setCurrentMinute", (int)minute));

并且日期选择器非常相似,但它不需要两个单独的方法,它只使用一个。

// invokes a method to input the date into the picker, where month starts from 0
app.Query(c => c.Raw("DatePicker").Invoke("updateDate", (int)year, (int)month - 1, (int)day));

我建议使用这个特殊的后门,因为它适用于各种 android 版本,因为每个版本的 android 都有稍微不同的日期/时间选择器样式。

【讨论】:

这对我不起作用,它什么也没做?我也尝试过 App.Repl()

以上是关于Xamarin 为 UI 测试形成更改时间选择器值的主要内容,如果未能解决你的问题,请参考以下文章

如何更改各种微调器值的 EditText 字段

更改时发布日期选择器值

当我更改其中一个时,为啥所有日期选择器值都变为空?

onAppear 不允许保存/更新选择器值的更改?

如何在 xamarin android ui 测试自动化中使用日期选择器

如何在 SwiftUI 中将颜色选择器值保存到 UserDefaults 中?