Appium не может найти элементы интерфейса с помощью XPath - PullRequest
0 голосов
/ 14 июня 2019

Мне нужно найти элементы пользовательского интерфейса в моем рабочем столе Windows WPF с использованием xpath и Appiums xpath-selector .

Работает нормальнодля «простых» приложений, но не для моего целевого приложения.

Моя среда:

ОС: Windows 10
Целевое приложение: x86 WPF
AppiumДрайвер Windows: 4.0.0.6 бета
Настольное приложение Appium: 1.13.0
Selenium WebDriver: 3.141.0

Это то, что я пытаюсь:

Как только я запустил свое целевое приложение настольным приложением Appium, его окно сеанса сообщает мне xpath к UI-элементам, например (см. Также скриншоты):

xpath:

"/Windows/ToolBar/Tab/TabItem[1]"

Снимок экрана окна Appium:

enter image description here

Снимок экрана microsofts inspect.exe:

enter image description here

Теперь проводная вещь:

Если я использую строку xpath, то appium shoМне, чтобы найти соответствующий UI-элемент в самом менеджере сеансов (используя функцию поиска и выбрав xpath-selector), он не может найти никаких элементов (см. скриншоты):

enter image description here

enter image description here

Кроме того, если я использую тривиальную строку xpath, такую ​​как

"//*"

или

"/Window"

также происходит сбой из-за отсутствия элементов.

Здесь, в отличие от этого, те же самые шаги, снятые на снимках экрана для приложения блокнота baretail.exe, для которогоэто работает, т. е. где я могу использовать предоставленную строку xpath для правильного поиска соответствующего UI-элемента.

Окна сеанса Appium:

enter image description here

Microsoft inspect.exe:

enter image description here

Поиск окна сессий Appiumдля UI-элемента - запрос:

enter image description here

Поиск в окне сеанса Appium для UI-элемента - результат:

enter image description here

В конце концов, мне нужно использовать это из C # -проекта, для которого я использую следующий код, но я получаю тот же результатТо есть, я не нахожу никаких элементов пользовательского интерфейса, соответствующих моей строке xpath.

(Я отладил исходный код Appium, так что я уже знаю, что запрос FindElement, использующий xpath-selecotr, отправлен успешно, ноСервер Appium отвечает пустым набором результатов найденных UI-элементов.)

AppiumOptions options = new AppiumOptions();

options.AddAdditionalCapability("app", "path/to/my/target/application");
options.AddAdditionalCapability("deviceName", "WindowsPC");
options.AddAdditionalCapability("platformName", "Windows");
options.AddAdditionalCapability("newCommandTimeout", "60000");

session = new WindowsDriver<WindowsElement>(new Uri(WindowsApplicationDriverUrl), options);

Assert.IsNotNull(session);

session.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(1.5);

string xpath = "/Window/MenuBar/MenuItem[2]"; // valid xpath to an UI-Element
var result = session.FindElementsByXPath(xpath); // successfully returns an empty collection

Кто-нибудь, есть идеи?Пожалуйста ...

...