#xamarin.forms #uitest
Вопрос:
Я видел несколько сообщений о ScrollDownTo (), но ни одно из них не давало хорошего направления. Безусловно, хорошие советы, такие как использование All (), чтобы найти элементы управления, которые не видны.
Является ли ответом, что ScrollDownTo просто не работает в UIScrollView?
У меня есть UIScrollView, который находится на FlexLayout, который находится в стеке. Я использую Xamarin.Формы, UITest и выполнение тестов с помощью UITest на симуляторе iOS.
В моем представлении прокрутки есть идентификатор автоматизации «ShiftInformationScrollView», и элемент управления, до которого я пытаюсь прокрутить, который находится в нижней части экрана в представлении прокрутки, представляет собой UIButton с идентификатором автоматизации c305d91a-2c89-4482-9464-a754f03ac8e2″. Обратите внимание, что в представлении прокрутки всего 6 элементов управления, поэтому не похоже, что ему нужно сканировать целую кучу или перемещаться далеко вниз. На самом деле это всего лишь небольшой жест вниз, чтобы управление было видно, если я делаю это на симуляторе вручную.
В нижней части моего поста я показываю результаты app.Flash (), чтобы показать, что оба идентифицированы. Поскольку UIButton не виден, я использовал метод All (), чтобы убедиться, что он отсканировал все элементы управления. Так что у меня есть хорошие «зацепки» в обоих элементах управления, с которыми я хочу что-то сделать.
Если я выполняю прокрутку вниз (), это делает жест прокрутки вниз.
приложение.прокрутка(x=>x.Id(«ShiftInformationScrollView»)) Прокрутка вниз с помощью запроса: Идентификатор(«ShiftInformationScrollView»)
Тем не менее, я попробовал несколько вариантов SCrollDownTo (), и ни один из них не прокручивался вниз до UIButton, который не виден, который находится в нижней части представления прокрутки.
Есть несколько вариантов, которые я пробовал, но ни один из них не прокручивался вниз по экрану прокрутки.Я также попытался сделать withinQuery гибким или стековым на случай, если это нужно будет сделать на более высоком уровне, но не повезло.
Вот несколько примеров неудачных попыток. Я знаю, что UITest знал, что я вызывал метод ScrollDownTo (), поскольку он сообщил мне, что он делает.
приложение.Прокрутка вниз(x => x.Все().Идентификатор(«c305d91a-2c89-4482-9464-a754f03ac8e2»), c =>> c.Id(«ShiftInformationScrollView»)) Прокрутка вниз до All().Id(«c305d91a-2c89-4482-9464-a754f03ac8e2») с запросом: Идентификатор(«ShiftInformationScrollView»)
I tried to explicitly name parameters in case that was an issue but didn’t make a difference.
app.ScrollDownTo(toQuery: x => x.All().Id(«c305d91a-2c89-4482-9464-a754f03ac8e2»), withinQuery: x => x.Id(«ShiftInformationScrollView»))
Scrolling down to All().Id(«c305d91a-2c89-4482-9464-a754f03ac8e2») withinQuery: Id(«ShiftInformationScrollView»)
I also tried to explicitly call the first element returned from my withinQuery to no success.
app.ScrollDownTo(toQuery: x => x.All().Id(«c305d91a-2c89-4482-9464-a754f03ac8e2»), withinQuery: c => c.Id(«ShiftInformationScrollView»).Index(0)) Scrolling down to All().Id(«c305d91a-2c89-4482-9464-a754f03ac8e2») withinQuery: Id(«ShiftInformationScrollView»).Index(0)
Here are my Flash() calls to show I have the right Queries built.
app.Flash(x=>x.All().Id(«c305d91a-2c89-4482-9464-a754f03ac8e2»))
Flashing query for All().Id(«c305d91a-2c89-4482-9464-a754f03ac8e2») gave 1 results. {Id => "c305d91a-2c89-4482-9464-a754f03ac8e2", Description => "<UIButton: 0x7fb013965ad0; frame = (0 0; 228 55); transform = [-1, 0, 0, 1, 0, 0]; opaque = NO; tintColor = UIExtendedSRGBColorSpace 0 0 0 1; layer = <CALayer: 0x600001500260>>",Rect => {Width => 228,Height => 55,X => 58,Y => 1073,CenterX => 172,CenterY => 1100.5},Label => "Picklist",Text => null,Class => "UIButton",Enabled => true}
app.Flash(x=>x.Id(«ShiftInformationScrollView»))
Flashing query for Id(«ShiftInformationScrollView») gave 1 results.
{Id => "ShiftInformationScrollView",Description => "<Xamarin_Forms_Platform_iOS_ScrollViewRenderer: 0x7fb017fbc000; baseClass = UIScrollView; frame = (0 0; 264 413.5); clipsToBounds = YES; gestureRecognizers = <NSArray: 0x600001e7a2b0>; layer = <CALayer: 0x6000015225e0>; contentOffset: {0, 0}; contentSize: {264, 527.5}; adjustedContentInset: {0, 0, 0, 0}>",
Rect => {
Width => 264,
Height => 413.5,
X => 40,
Y => 626.5,
CenterX => 172,
CenterY => 833.25
},
Label => null,
Text => null,
Class => "Xamarin_Forms_Platform_iOS_ScrollViewRenderer",
Enabled => true
}