#python #pywinauto
#python #pywinauto
Вопрос:
Я пытаюсь ввести (Alt клавиша Windows) в скрипт для моего приложения. Я определил type_keys
def type_keys(string, element):
"""Type a string char by char to Element window"""
for char in string:
element.type_keys(char)
Затем вызываем ее во время сохранения здесь:
# Save
print("Saving")
type_keys("%{VK_LWIN down}", win)
#wait_win_ready(win)
time.sleep(10)
type_keys("1", win)
win.wait("enabled", timeout = REFRESH_TIMEOUT)
Я получаю ошибку, которая кажется, что мой синтаксис неверен, но не уверен, как исправить.
Saving
Traceback (most recent call last):
File "c:python36librunpy.py", line 193, in _run_module_as_main
"__main__", mod_spec)
File "c:python36librunpy.py", line 85, in _run_code
exec(code, run_globals)
File "C:Python36Scriptspbixrefresher.exe__main__.py", line 9, in <module>
File "c:python36libsite-packagespbixrefresherpbixrefresher.py", line 67, in main
type_keys("%{VK_LWIN down}", win)
File "c:python36libsite-packagespbixrefresherpbixrefresher.py", line 13, in type_keys
element.type_keys(char)
File "c:python36libsite-packagespywinautobase_wrapper.py", line 971, in type_keys
vk_packet)
File "c:python36libsite-packagespywinautokeyboard.py", line 710, in send_keys
vk_packet=vk_packet)
File "c:python36libsite-packagespywinautokeyboard.py", line 621, in parse_keys
raise KeySequenceError('`}` not found')
pywinauto.keyboard.KeySequenceError: `}` not found
Надеюсь на некоторую помощь в объяснении того, почему я получаю эту ошибку! Спасибо за чтение.
Ответ №1:
Это опечатка в этой строке: type_keys("%{VK_LWIN down}", win)
которая должна быть element.type_keys("%{VK_LWIN down}")
Проблема в том, что ваша реализация type_keys
разворачивает последовательность примерно так:
element.type_keys("%")
element.type_keys("{") # fails here, absolutely expected!
element.type_keys("V")
element.type_keys("K")
element.type_keys("_")
element.type_keys("L")
element.type_keys("W")
element.type_keys("I")
element.type_keys("N")
element.type_keys(" ") # it won't be typed without param `with_spaces=True` (default is False)
element.type_keys("d")
element.type_keys("o")
element.type_keys("w")
element.type_keys("n")
element.type_keys("}")
Комментарии:
1. Большое вам спасибо за ваш комментарий — в вашем ответе — вы предлагаете удалить «, win» из строки type_keys — используя элемент, вы все равно найдете правильное окно приложения (в данном случае файл pbix, который был определен как win?) — Я протестирую и вернусь сюда — еще раз большое вам спасибо.