0

我需要使用 Xamarin.UITest 2.0.9 在 iOS 10.3 上的 datepicker 中设置日期。Repl 在尝试获取树时崩溃,但我q => q.Class("UIDatePicker")对此元素使用以下查询。

我正在尝试 使用以下代码 通过调用 SetDate 方法https://developer.xamarin.com/api/member/MonoTouch.UIKit.UIDatePicker.SetDate/p/MonoTouch.Foundation.NSDate/System.Boolean/app.Query(q => q.Class("UIDatePicker").Invoke("setDate", date, false))来设置日期,其中date 是一个 DateTime 对象,但它会引发异常:

System.Exception : Error while performing Query([unknown])
----> System.Exception : Invoking an iOS selector requires either 0 or an uneven number of arguments (they have to match up pairwise including method name).

我也尝试通过以下方式设置日期:

app.Query(q => q.Class("UIDatePicker").Invoke("setDate", date)) 但它返回object[1] { null }并且没有任何反应。

DatePicker 图片:在此处输入图片描述

4

2 回答 2

3

我能够使它工作,但是我必须添加的细节很少。对我来说,在时间选择器上设置时间的操作是:

app.Query(c => c.Class("UIDatePicker").Invoke("setDate", DateTime.Today.AddHours(time.Hour).AddMinutes(time.Minute), "animated", true));
app.Query(c => c.Class("UIDatePicker").Invoke("accessibilityActivate"));

时间是DateTime期望时间的对象。这在没有添加"animated", true的情况下也有效。

当尝试在 REPL 中检查这一点时,我注意到DateTime.Now没有将选择器设置为正确的时间,而使用DateTime.Today工作正常。我不确定为什么,也许将来有人会对此进行调查。

accessibilityActivate关闭选择器时,我必须调用以保存更改。没有它,选定的时间不会保存在我的测试应用程序中。这解决了我的问题,所以我没有进一步调查

于 2019-01-31T12:15:34.163 回答
0

利用

app.Query(q => q.Class("UIDatePicker").Invoke("updateDate", year, month, day))

月份从 0 = 一月开始。

于 2017-10-10T13:34:32.560 回答