【发布时间】:2019-04-03 08:07:13
【问题描述】:
我们正在使用 UITest 测试我们的 Xamarin.Forms 应用,并且需要在 iOS 上选择 Picker 的值。
可以通过项目集合中的行号进行选择,如下所示:
app.Query(x => x.Class("UIPickerView").Invoke("selectRow", 1, "inComponent", 0, "animated", true))
我们在上面的例子中选择了第 1 行。
但是,我们需要能够按值进行选择 - 例如,对于具有标题列表的 Picker,要选择“Mrs”标题,我们需要执行以下操作:
app.Query(x => x.Class("UIPickerView").Invoke("selectValue", "Mrs", "inComponent", 0, "animated", true))
但是,UIPickerView 上没有可用的 selectValue(或类似)方法(参考 here)。
一个想法是获取项目中的行数,并遍历它们 - 但是当我尝试调用 getNumberOfRows 时,我收到以下错误:
app.Query(x => x.Class("UIPickerView").Invoke("numberOfRows", "inComponent", 0))
执行查询时出错([未知])异常:System.Exception: 调用 iOS 选择器需要 0 或奇数个 参数(它们必须成对匹配,包括方法名称)。在 Xamarin.UITest.Queries.InvokeHelper.AppTypedSelector (Xamarin.UITest.Queries.AppQuery appQuery, Xamarin.UITest.Queries.ITokenContainer tokenContainer,System.Object[] queryParams,System.String 方法名,System.Object[] 参数, System.Boolean explicitRequestedValue) [0x0011a] in :0 在 Xamarin.UITest.Queries.InvokeHelper.Invoke (Xamarin.UITest.Queries.AppQuery appQuery,System.String methodName, System.Object[] 参数)[0x00000] 在 :0 在 Xamarin.UITest.Queries.AppQuery.Invoke(System.String 方法名, System.Object arg1,System.Object arg2) [0x00000] 在 :0 在 .m__0 (Xamarin.UITest.Queries.AppQuery x) [0x0000b] 在 :0 在 Xamarin.UITest.SharedApp.Expand[T] (System.Func
2[T,TResult] typedQuery) [0x0000c] in <2a16c16730a54859bda72c6bc1c728f7>:0 at Xamarin.UITest.iOS.iOSApp+<>c__DisplayClass17_01[T].b__0 () [0x00000] 在 :0 处 Xamarin.UITest.Utils.ErrorReporting.With[T] (System.Func`1[TResult] func, System.Object[] args, System.String memberName) [0x0000e] in :0 异常:错误同时 执行查询([未知])
错误的原因很清楚 - 该方法需要特定的参数配对,但我看不出如何正确地制定查询。
那么关于如何按值而不是行号和/或如何获取项目数的任何想法/指针?
【问题讨论】:
标签: ios picker xamarin.uitest