pywinauto.keyboard.KeySequenceError: `}` должен предшествовать `{` - PullRequest
0 голосов
/ 02 апреля 2020

Имеется следующий код, он выводит сгенерированный пароль в командную строку (используя команду печати), но когда я отправляю сгенерированный пароль в текстовое поле пароля, я получаю сообщение об ошибке

pywinauto. keyboard.KeySequenceError: } должно предшествовать {

app = Application(backend="uia").connect(title = "SKF Insight Rail Manager")

app.top_window (). set_focus ()

password = random.choice(string.ascii_lowercase)
password += random.choice(string.punctuation)
password += random.choice(string.ascii_uppercase)
password += random.choice(string.digits)
for i in range(4):
    randomSource = string.ascii_letters + string.digits + string.punctuation
    password += random.choice(randomSource)

1 Ответ

0 голосов
/ 03 апреля 2020

Вьющиеся скобки - это своего рода escape-последовательность. Вам нужно удалить их, добавив {}. В вашем случае это должно выглядеть так:

password = "{}}" # wrap by {} for send_keys
password += "{{}" # wrap by {} for send_keys
password += random.choice(string.digits)
password += random.choice(string.punctuation)
for i in range(4):
    randomSource = string.ascii_letters + string.digits + string.punctuation
    password += random.choice(randomSource)

# tricky replace is needed for human readable form of password
print("Generated password:" + password.replace('{}}', '}').replace('{{}', '{'))

time.sleep(1)

keyboard.send_keys(password)

Документы о send_keys: https://pywinauto.readthedocs.io/en/latest/code/pywinauto.keyboard.html

...