Xamarin.UITest:如何在iOS上的datepicker中设置日期?

Xamarin.UITest:如何在iOS上的datepicker中设置日期?,ios,datepicker,automation,ios-ui-automation,xamarin.uitest,Ios,Datepicker,Automation,Ios Ui Automation,Xamarin.uitest,我需要使用Xamarin.UITest 2.0.9在iOS 10.3上的datepicker中设置日期。 Repl在尝试获取树时崩溃,但我对该元素使用了以下查询q=>q.Class(“UIDatePicker”) 我正在尝试通过调用SetDate方法设置日期 使用以下代码 app.Query(q=>q.Class(“UIDatePicker”).Invoke(“setDate”,date,false))其中date是DateTime对象,但它抛出异常: System.Exception : Er

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

我正在尝试通过调用SetDate方法设置日期 使用以下代码
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}
并且什么也没有发生

日期选择器映像:

使用

app.Query(q => q.Class("UIDatePicker").Invoke("updateDate", year, month, day))
月份从0=一月开始。

使用

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

月份从0=1月开始。

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

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
对象。这在不添加
“动画”的情况下也能正常工作

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


关闭选择器时,我必须调用
accessibilityActivate
来保存更改。选择的时间没有保存在我的测试应用程序中。这就解决了我的问题,所以我还没有进一步调查我是否能够让它工作,但我必须补充一些细节。 对我来说,在时间选择器上设置时间的操作是:

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
对象。这在不添加
“动画”的情况下也能正常工作

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


关闭选择器时,我必须调用
accessibilityActivate
来保存更改。选择的时间没有保存在我的测试应用程序中。这就解决了我的问题,所以我还没有进一步研究这是一个非常有趣的行为,当您IDatePicker dp4=new UIDatePicker()时;dp4.AccessibilityActivate();从实际的代码库来看,它不起作用;dp4.AccessibilityActivate();从实际的代码库来看,它不起作用。