Мне нужно найти элементы пользовательского интерфейса в моем рабочем столе 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](https://i.stack.imgur.com/H5xBt.jpg)
Снимок экрана microsofts inspect.exe:
![enter image description here](https://i.stack.imgur.com/IFwF2.jpg)
Теперь проводная вещь:
Если я использую строку xpath, то appium shoМне, чтобы найти соответствующий UI-элемент в самом менеджере сеансов (используя функцию поиска и выбрав xpath-selector), он не может найти никаких элементов (см. скриншоты):
![enter image description here](https://i.stack.imgur.com/4YUOt.jpg)
![enter image description here](https://i.stack.imgur.com/p9UzB.jpg)
Кроме того, если я использую тривиальную строку xpath, такую как
"//*"
или
"/Window"
также происходит сбой из-за отсутствия элементов.
Здесь, в отличие от этого, те же самые шаги, снятые на снимках экрана для приложения блокнота baretail.exe, для которогоэто работает, т. е. где я могу использовать предоставленную строку xpath для правильного поиска соответствующего UI-элемента.
Окна сеанса Appium:
![enter image description here](https://i.stack.imgur.com/MwVt1.jpg)
Microsoft inspect.exe:
![enter image description here](https://i.stack.imgur.com/71jVO.jpg)
Поиск окна сессий Appiumдля UI-элемента - запрос:
![enter image description here](https://i.stack.imgur.com/aVl1d.jpg)
Поиск в окне сеанса Appium для UI-элемента - результат:
![enter image description here](https://i.stack.imgur.com/la6bb.jpg)
В конце концов, мне нужно использовать это из 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
Кто-нибудь, есть идеи?Пожалуйста ...