Не удается автоматизировать нажатие кнопки «Виртуальный ящик Oracle VM» с помощью pywinauto в python - PullRequest
0 голосов
/ 25 февраля 2019

Я работаю над автоматизацией загрузки файла образа в «Oracle VM Virtual box», чтобы создать виртуальную машину, используя Pywinauto в python.Я могу автоматизировать установку программного обеспечения Virtual Box и после этого могу запустить exe-файл, также показанный на изображении

VM Tool GUI

Но после этого яне удалось выполнить какие-либо операции с графическим интерфейсом в «Oracle VM VirtualBox Manager» (например, выбрать меню «Файл» или нажать кнопку «Создать») автоматически с помощью Pywinauto.Я приложил снимок средства проверки для виртуальной машины Oracle VM

Inspect Tool VM VirtualBox

Ниже приведен код, который я пытаюсь запустить

>>> from pywinauto import application
>>> app=application.Application()

>>> app.start(r"C:\Program Files\Oracle\VirtualBox\VirtualBox.exe")
<pywinauto.application.Application object at 0x000001D671679BA8>

>>>app['Oracle VM VirtualBox Manager']['New']
<pywinauto.application.WindowSpecification object at 0x000001D670FB9CC0>

>>> app['Oracle VM VirtualBox Manager']['New'].click()

После выполнения команды click, показанной выше, я получаю ошибку

Ошибка:

Traceback (most recent call last):
  File "C:\Program Files\Python37\lib\site-packages\pywinauto\application.py", line 246, in __resolve_control
    criteria)
  File "C:\Program Files\Python37\lib\site-packages\pywinauto\timings.py", line 453, in wait_until_passes
    raise err
pywinauto.timings.TimeoutError

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<pyshell#6>", line 1, in <module>
    app['Oracle VM VirtualBox Manager']['New'].click()
  File "C:\Program Files\Python37\lib\site-packages\pywinauto\application.py", line 352, in __getattribute__
    ctrls = self.__resolve_control(self.criteria)
  File "C:\Program Files\Python37\lib\site-packages\pywinauto\application.py", line 249, in __resolve_control
    raise e.original_exception
  File "C:\Program Files\Python37\lib\site-packages\pywinauto\timings.py", line 431, in wait_until_passes
    func_val = func(*args, **kwargs)
  File "C:\Program Files\Python37\lib\site-packages\pywinauto\application.py", line 210, in __get_ctrl
    ctrl = self.backend.generic_wrapper_class(findwindows.find_element(**ctrl_criteria))
  File "C:\Program Files\Python37\lib\site-packages\pywinauto\findwindows.py", line 87, in find_element
    raise ElementNotFoundError(kwargs)
pywinauto.findwindows.ElementNotFoundError: {'best_match': 'New', 'top_level_only': False, 'parent': <win32_element_info.HwndElementInfo - 'Oracle VM VirtualBox Manager', Qt5QWindowIcon, 68992>, 'backend': 'win32'}

В инструменте проверки он показывает, что окно Oracle VM VirtualBox Manager «На фокусе клавиатуры» ложно идля этих элементов управления нет идентификатора автоматизации.

Пожалуйста, предложите мне команды для автоматизации нажатия кнопок в этом графическом интерфейсе.Я новичок в Python и не могу понять, что мне делать дальше.

1 Ответ

0 голосов
/ 25 февраля 2019

Если вы используете Inspect.exe, вы должны использовать Application(backend="uia") в качестве точки входа.Это описано в Руководстве по началу работы .

Бэкэнд по умолчанию - "win32", поэтому его можно использовать, если Spy++ видит эту кнопку (я предполагаю, что ответ "нет").

...