WinAppDriver Appium не находит элемент, видимый через inspect.exe

Я программирую в приложении WinForms с графическим интерфейсом, созданным с использованием Visual Basic еще до 2005 года. У меня часто бывают элементы, которые видны в inspect.exe, но когда я запускаю WinAppDriver и Appium, он не может обнаружить эти элементы.

Это ошибка, которую я получаю.

OpenQA.Selenium.WebDriverException: «Элемент не может быть расположен на странице с использованием заданных параметров поиска».

Ошибка возникнет, даже если мое приложение является единственным развернутым приложением. Это происходит, когда я нажимаю кнопку и запускаю другую форму. Чтобы убедиться, что это не потому, что элементы еще не появились, я запустил команду Thread.Sleep (5000), чтобы убедиться, что запущенная форма имеет достаточно времени для появления.

Это строка кода, которая пытается щелкнуть элемент.

driver.FindElementByAccessibilityId("vlblYVar").Click(); 

Вот изображение, на котором inspect.exe четко обнаруживает элемент. Будем признательны за любые рекомендации!

введите описание изображения здесь


person Pman6543    schedule 27.04.2020    source источник


Ответы (1)


Оказывается, требуется значительное количество времени для того, чтобы элементы в всплывающем окне стали распознаваемыми winappdriver, даже если inspect.exe сразу их обнаружит.

Мне пришлось использовать

var element = desktopWait.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.VisibilityOfAllElementsLocatedBy(ByWindowsAutomation.AccessibilityId("vlblYVar")));
desktop.FindElementByAccessibilityId("vlblYVar").Click(); 

Также мне пришлось использовать драйвер, который загружает пользовательский интерфейс рабочего стола, потому что при использовании драйвера моей программы не удалось найти элемент, который приведет к тайм-ауту.

Но у меня есть новая проблема. Когда у меня есть поле со списком, элементы в этом поле со списком находятся по имени с помощью inspect.exe, но winAppDriver никогда не может идентифицировать элементы в поле со списком.

person Pman6543    schedule 27.04.2020