Как получить список дочерних элементов с помощью winappdriver в приложении win32?
Я использую WinAppDriver (используя NUnit и C#) для тестирования некоторых старых приложений win32.
Когда я отлаживаю тесты, я достигаю определенных точек, где мне нужно увидеть список всех дочерних элементов выбранного элемента. Это позволит мне построить следующий шаг в тесте.
Я пытался использовать различные методы FindElementsXXX, но не нашел ни одного, который работает. Кажется, что ни у кого нет опции поиска по шаблону.
Существует ли синтаксис для XPath, который будет работать в этой ситуации? Я видел несколько фрагментов XPath, которые "должны" работать, но я получаю сообщения об ошибках, которые не поддерживаются.
2 ответа
Да, для этого есть выражение XPath. Дано x
строка для вашего элемента XPath, вам нужно добавить /*
к этому. Пример:/bookstore
это элемент... /bookstore/*
выделяет все его дочерние элементы. Ссылка здесь.
XAML:
<ListBox x:Name="MyList">..</ListBox>
Тест WinAppDriver:
var listBox = testSession.FindElementByAccessibilityId("MyList");
var comboBoxItems = listBox.FindElementsByClassName("ListBoxItem");
XPath: синтаксические функции
var comboBoxItems = listBox.FindElementByXPath("//ListBoxItem"); // ok
В реальном мире я бы использовал что-то вроде этого. Но и на моей стороне это не работает:
var xPath = "//ListBox[@Name=\"MyList\"]//ListBoxItem[@IsSelected=\"True\"]";
listBox.FindElementByXPath(xPath); // => not working
listBox.FindElementByXPath("//ListBox"); // => empty?
listBox.FindElementByXPath("//ListView"); // => empty?
Дочерние элементы ComboBox немного особенные. Они создаются после нажатия на комбо, и я обнаружил несколько открытых проблем по этому поводу.
Для отладки я использую Inspect.exe, который описан в этом видео, и окно немедленного выполнения в VS. Таблица немного помогает выяснить, что:
- WPF => Inspect.exe => WinAppDriver
- x:Name => AutomationId => FindElementByAccessibilityId(*)
- Тип управления => LocalizedControlType => FindElementByClass(ToUpperCamelCase(*))
Глупый водитель. У меня было 8 моделей, которые не будут работать. Ошибка указывает на то, что шаблон не поддерживается.
Я наткнулся на этот пост. Проблема с драйвером веб-страниц 51, в которой указано, что некоторые ссылки для загрузки могут указывать на старые версии. Ага! Это была проблема. Правильная ссылка для скачивания (по состоянию на 30.01.2017 - v0.7-beta)