pywinauto не находит элементы Win32 в смешанных серверных приложениях в virtualbox - PullRequest
0 голосов
/ 10 июля 2019

pywinauto не находит элементы интерфейса win32, которые являются дочерними элементами элементов aui, если скрипт запускается в virtualbox

. У нас есть WinForm ComboBox, который при вызове вызывает Win32 ComboLBox с ListItems в нем,При использовании подхода по умолчанию pywinauto на локальном компьютере pywinauto не находит backend-элементы win32, являющиеся дочерними элементами back-end aui, если скрипт запускается в virtualbox

.ListItems в нем.При использовании подхода pywinauto по умолчанию на локальной машине

app.Dialog.ComboLBox.select('myitem')

он работает отлично.При использовании того же кода на виртуальной машине Virtualbox (MSEdge на Win10 (x64) с веб-сайта Microsoft) элементы в объекте ComboLBox не видны pywinauto. Проверка перечисляет их, .ComboLBox.texts() возвращает список строк, но .ComboLBox.children() пуст.

Есть ли обходной путь для таких сценариев?Я с трудом могу себе представить, как многие инструменты автоматизации будут прямо на вашем настольном компьютере, поскольку в наши дни все переходят на виртуальные машины и облака.

1 Ответ

0 голосов
/ 11 июля 2019

Дочернее поле со списком WinForms может не отображаться, пока оно не будет раскрыто хотя бы один раз. Это должно выглядеть так же в Inspect.exe. Метод .texts () использует другой подход, чем получение детей. Также есть метод .select («...»), который должен работать в обоих случаях. Если вам строго необходим список детей, просто выполните .expand (). Collapse () перед .children ().

Конечно, это не связано с VirtualBox или какими-либо облачными вещами. Возможно, вам просто повезло поймать это в конкретной версии .NET Runtime.

...