【问题标题】:Xamarin.UITest: How to set date in datepicker on iOS?Xamarin.UITest:如何在 iOS 上的 datepicker 中设置日期?
【发布时间】:2017-10-27 01:14:29
【问题描述】:

我需要使用 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 } 并且没有任何反应。

日期选择器图片:enter image description here

【问题讨论】:

    标签: ios datepicker automation ios-ui-automation xamarin.uitest


    【解决方案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 具有所需时间的对象。这在不添加 "animated", true 的情况下也有效。

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

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

    【讨论】:

    • 当你 IDatePicker dp4 = new UIDatePicker(); dp4.AccessibilityActivate();从实际代码库来看,它不起作用。
    【解决方案2】:

    使用

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

    月份从 0 开始 = 一月。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-21
      • 2018-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-03
      相关资源
      最近更新 更多