Как прокрутить область как выпадающий список в окне драйвера Winapp с c#? - PullRequest
0 голосов
/ 13 февраля 2020

Я автоматизирую настольное приложение, в котором у меня есть список, в котором перечислены многие элементы, и я хочу щелкнуть элемент, который скрыт, и этот элемент отобразится после прокрутки списка. Какой код будет работать для этого? Я работаю с WinAppdriver, appium, c# и MSTest. Мне нужны такие строки кода, с помощью которых список будет прокручиваться, пока элемент не найдет.

ScrollListBox

Ответы [ 2 ]

0 голосов
/ 14 февраля 2020

Кто-то подсказывает мне это решение, и оно работает для меня сейчас. Итак, я публикую ответ здесь.

В окне списка есть элемент доступности "lbStates". Мы хотим нажать на элемент «N C», который имеет текст «N C». В этом случае свойство «Отображаемое» большинства элементов списка будет ложным. Мы можем нажать кнопку вниз в ListBox, чтобы прокрутить вниз, или Мы можем нажать кнопки и проверить, отображается ли значение, на которое мы хотим нажать, или нет. Возможно, что значение, которое мы хотим щелкнуть, отсутствует в списке, в этом случае наш код будет go в тупике, и для этого я ввел целое число maxClicks.

 [TestMethod]
        public void ListBoxTest()
        {
            //lbStates
            var lbStates = sessionWinForm.FindElementByAccessibilityId("lbStates");
            var allListItems = lbStates.FindElementsByTagName("ListItem");
            var valueToClick = "NC";
            var maxClicks = 10;
            foreach(var ali in allListItems)
            {
                Debug.WriteLine($"{ali.Displayed} - {ali.Text}");
                if(ali.Text.Equals(valueToClick) && !ali.Displayed)
                {
                    var downButton = lbStates.FindElementByAccessibilityId("DownButton");
                    var listItemToClick = lbStates.FindElementByName(valueToClick);

                    while(!listItemToClick.Displayed && (maxClicks-- > 0))
                    {
                        downButton.Click();
                        listItemToClick = lbStates.FindElementByName(valueToClick);

                        if (listItemToClick.Displayed)
                        {
                            listItemToClick.Click();
                        }
                    }
                }
            }
        }
0 голосов
/ 13 февраля 2020

Вы можете просто найти свой элемент с помощью winappdriver, и он будет прокручивать себя до элемента. Я автоматизировал приложение windows с полем ввода, которое принимает файл, и с кнопкой браузера после нажатия кнопки обзора, оно само прокручивается до элемент найден.

Что касается кода, вы можете просто попытаться найти элемент нормальный, как он есть.

Надеюсь, это поможет. :)

...