Невозможно использовать print_control_identifiers() для моего настольного приложения в pywinauto

Привет, я не могу использовать "print_control_identifiers()" для своего настольного приложения. Я использую а) Python 3.5.3 (32-битный, так как мое приложение, которое я автоматизирую, является 32-битным) б) Pywinauto 0.6.2. Мой простой код выглядит следующим образом:

`from pywinauto import Application
app = Application(backend="uia")    
app = Application().start(r"C:\Program Files (x86)\Trane\TRACE 3D  Plus\TRACE™ 3D Plus.exe")  
app['TRACE™ 3D Plus'].print_control_identifiers()`

Когда я запускаю указанную выше команду, я получаю в командной строке следующее:

Traceback (most recent call last):
File "D:\Python\lib\site-packages\pywinauto\application.py", line 243, in   __re
solve_control
criteria)
File "D:\Python\lib\site-packages\pywinauto\timings.py", line 424, in     wait_until_passes
raise err
pywinauto.timings.TimeoutError

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "inspect.py", line 4, in <module>
app['TRACE\u2122 3D Plus'].print_control_identifiers()
File "D:\Python\lib\site-packages\pywinauto\application.py", line 573, in  prin
t_control_identifiers
this_ctrl = self.__resolve_control(self.criteria)[-1]
File "D:\Python\lib\site-packages\pywinauto\application.py", line 246, in __re
solve_control
raise e.original_exception
File "D:\Python\lib\site-packages\pywinauto\timings.py", line 402, in   wait_unt
il_passes
func_val = func(*args)
File "D:\Python\lib\site-packages\pywinauto\application.py", line 188, in __ge
t_ctrl
dialog = self.backend.generic_wrapper_class(findwindows.find_element(**crite
ria[0]))
File "D:\Python\lib\site-packages\pywinauto\findwindows.py", line 84, in   find_
element
elements = find_elements(**kwargs)
File "D:\Python\lib\site-packages\pywinauto\findwindows.py", line 294, in find
_elements
elements = findbestmatch.find_best_control_matches(best_match, wrapped_elems
)
File "D:\Python\lib\site-packages\pywinauto\findbestmatch.py", line 534, in  fi
nd_best_control_matches
raise MatchError(items = name_control_map.keys(), tofind = search_text)
pywinauto.findbestmatch.MatchError: Could not find 'TRACE\u2122 3D Plus' in   'dic
t_keys([])'

Может ли кто-нибудь сказать мне, в чем проблема и что я могу сделать, чтобы решить ее?

Заранее спасибо !


person Shivaram Panchagnula    schedule 03.04.2017    source источник


Ответы (1)


Замените эти команды

app = Application(backend="uia")    
app = Application().start(r"C:\Program Files (x86)\Trane\TRACE 3D  Plus\TRACE™ 3D Plus.exe")

с этим:

app = Application(backend="uia").start(r'"C:\Program Files (x86)\Trane\TRACE 3D  Plus\TRACE™ 3D Plus.exe"')

Потому что вы воссоздаете объект app со значением по умолчанию backend="win32", если не используете аргумент. Если это трудно понять, я бы порекомендовал сначала пройти курс Python. Здесь необходимы базовые навыки программирования на Python, чтобы понять, что происходит.

person Vasily Ryabov    schedule 04.04.2017
comment
Здравствуйте, Василий, спасибо за участие. Я изучаю Python, чтобы лучше понимать вещи. Я не продвинулся далеко в курсе, хотя. Я также пробовал код, упомянутый вами. Однако я получаю те же ошибки, что и выше. - person Shivaram Panchagnula; 04.04.2017
comment
Добавлены двойные кавычки, потому что путь содержит пробелы! Смотрите отредактированный ответ. - person Vasily Ryabov; 04.04.2017
comment
Кстати, могу ли я скачать эту программу Trace 3D Plus? Может какая пробная версия. - person Vasily Ryabov; 04.04.2017
comment
В этом коде я получаю сообщение об ошибке запуска приложения, и система не может найти указанный файл в командной строке. Василий, этот продукт еще не выпущен в продажу, поэтому пробную версию вы пока не найдете. - person Shivaram Panchagnula; 05.04.2017