pywinauto-пример из документации запускает блокнот, открывает меню и - затыкается... Если кому интересно, то без строки закрытия окна app.AboutNotepad.OK.click() текст в блокнот нормально выводится следующим оператором...
А то модуль то классный, но если у меня не работает даже их пример использования их модуля, то что то я не понимаю значит... Вот и прошу о помощи)
Кстати - на английской раскладке все работает...
# -*- coding: utf-8 -*-
from pywinauto.application import Application
# Run a target application
app = Application().start("notepad.exe")
# Select a menu item
#app.UntitledNotepad.menu_select("Help->About Notepad")
app.UntitledNotepad.menu_select("Довідка->Про програму")
# Click on a button
app.AboutNotepad.OK.click()
# Type a text string
app.UntitledNotepad.Edit.type_keys("pywinauto Works!", with_spaces = True)
Ниже привожу начало и конец сообщений из которых следует, что пункта меню "ОК" в словаре не найдено.
Как видно в тексте программы - я изменил стандартную англоязычную строку примера - на украинский вариант. Так вот аналогичное сообщение выдавалось с рассказом что "не могут найти Help в словаре" и далее в словаре были указаны украинские названия - "&Довідка"... Надеюсь смог объяснить, что-то ))
Traceback (most recent call last):
File "C:\Users\Vasil\AppData\Local\Programs\Python\Python36\lib\site-packages\pywinauto\application.py", line 245, in __resolve_control
criteria)
File "C:\Users\Vasil\AppData\Local\Programs\Python\Python36\lib\site-packages\pywinauto\timings.py", line 447, in wait_until_passes
raise err
pywinauto.timings.TimeoutError
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "F:/PyCodes/WOW/pptx/pywinauto _notepad-example.py", line 9, in
Ответ
Дело в кириллизации! Вот работающий в украинской раскладке код. Под русскую подправите сами, глядя на названия меню в "Блокноте".
# -*- coding: utf-8 -*-
from pywinauto.application import Application
# Run a target application
app = Application().start("notepad.exe")
# Select a menu item
#app.UntitledNotepad.menu_select("Help->About Notepad")
app.UntitledNotepad.menu_select("Довідка->Про програму")
# Click on a button
#app.AboutNotepad.OK.click()
app.Пропрограмублокнот.ОК.click()
# Type a text string
app.UntitledNotepad.Edit.type_keys("pywinauto Works!", with_spaces = True)
Да, вместо app.AboutNotepad.OK.click() надо написать
app.Пропрограмублокнот.ОК.click()
Причем ОК - тоже надо набрать кириллицей. И - все работает.
Мое мнение - ребята перестарались с дружественностью кодирования. Если мне надо писать для разных раскладок мне нужно три кода (три модуля). А используя модуль win32com мне нужно выбирать литералы в словаре. Так что я свой выбор остановил на "не дружественном" но практичном win32com
Комментариев нет:
Отправить комментарий