Мы тестируем наше приложение Xamarin.Forms, используя UITest, и нам нужно выбрать значение средства выбора на iOS.
Можно выбрать по номеру строки в коллекции предметов, как это:
app.Query(x => x.Class("UIPickerView").Invoke("selectRow", 1, "inComponent", 0, "animated", true))
где мы выбираем строку 1 в приведенном выше примере.
Однако нам нужно иметь возможность выбирать по значению - так, например, с помощью средства выбора, имеющего список заголовков, чтобы выбрать заголовок «Mrs», нам нужно сделать что-то вроде:
app.Query (x => x.Class ("UIPickerView"). Invoke ("selectValue", "Mrs", "inComponent", 0, "animated", true))
Однако в UIPickerView нет метода selectValue (или аналогичного метода) (ссылка здесь ).
Одна мысль состоит в том, чтобы получить количество строк в элементах и перебрать их, но когда я пытаюсь вызвать 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 methodName, System.Object [],
System.Boolean явноRequestedValue) [0x0011a] в
<2a16c16730a54859bda72c6bc1c728f7>: 0 в
Xamarin.UITest.Queries.InvokeHelper.Invoke
(Xamarin.UITest.Queries.AppQuery appQuery, System.String methodName,
System.Object [] arguments) [0x00000] в
<2a16c16730a54859bda72c6bc1c728f7>: 0 в
Xamarin.UITest.Queries.AppQuery.Invoke (System.String methodName,
System.Object arg1, System.Object arg2) [0x00000] в
<2a16c16730a54859bda72c6bc1c728f7>: 0 в
.m__0
(Xamarin.UITest.Queries.AppQuery x) [0x0000b] в
<0de9804cff324d049415e25573e8da8a>: 0 в
Xamarin.UITest.SharedApp.Expand [T] (System.Func 2[T,TResult]
typedQuery) [0x0000c] in <2a16c16730a54859bda72c6bc1c728f7>:0 at
Xamarin.UITest.iOS.iOSApp+<>c__DisplayClass17_0
1 [T] .b__0 ()
[0x00000] в <2a16c16730a54859bda72c6bc1c728f7>: 0 в
Xamarin.UITest.Utils.ErrorReporting.With [T] (System.Func`1 [TResult]
func, System.Object [] args, System.String memberName) [0x0000e] в
<2a16c16730a54859bda72c6bc1c728f7>: 0 Исключение: ошибка при
выполнение запроса ([неизвестно])
Причина ошибки совершенно ясна - метод ожидает определенного сочетания параметров, но я не вижу, как правильно сформулировать запрос.
То есть какие-нибудь мысли / указатели о том, как я могу выбирать по значению, а не по номеру строки и / или как получить количество элементов?