Как получить список дочерних элементов с помощью 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)

Другие вопросы по тегам