pywinauto.keyboard.KeySequenceError: `)` 前面应该有 `(`

问题描述 投票:0回答:2
Traceback (most recent call last):
  File "C:/Users/lppio/PycharmProjects/WorkTexter/main.py", line 43, in <module>
    typeNumber.type_keys(row[2])  # inputs number
  File "C:\Users\lppio\PycharmProjects\WorkTexter\venv\Chromium_Filler_Test\pythonProject\lib\site-packages\pywinauto\base_wrapper.py", line 964, in type_keys
    keyboard.send_keys(
  File "C:\Users\lppio\PycharmProjects\WorkTexter\venv\Chromium_Filler_Test\pythonProject\lib\site-packages\pywinauto\keyboard.py", line 708, in send_keys
    keys = parse_keys(
  File "C:\Users\lppio\PycharmProjects\WorkTexter\venv\Chromium_Filler_Test\pythonProject\lib\site-packages\pywinauto\keyboard.py", line 643, in parse_keys
    raise KeySequenceError('`)` should be preceeded by `(`')
pywinauto.keyboard.KeySequenceError: `)` should be preceeded by `(`

我从这行特定的代码中收到上述错误,但我不知道如何解决它:

    typeNumber = appWin[work].child_window(title="Type name, number or email", control_type="Edit")
        typeNumber.type_keys(row[2])

脚本不久前运行良好,但现在当我尝试重新启动它时,我明白了。我特别认为问题是由代码的

typeNumber.type_keys(row[2])
部分引起的;但我该如何解决它?

python keyboard keyboard-events pywinauto
2个回答
1
投票

您需要取消转义括号,因为它们意味着一些关键代码,例如

{ENTER}
(ENTER)
。解决方案应如下所示:

typeNumber.type_keys(row[2].replace(')', '{)}').replace('(', '{(}'))

如果

row[2]
可能包含
{
}
,只需将其替换为
({)
(})
即可。


0
投票

如果字符串中有“)”和“}”,则无法通过替换解决该问题,而是循环遍历每个字符并通过用括号括起来来修复:

password = 'ss{)747&FH%4)}'
clean_pass = ''
for c in password:
    if c in ['(', ')', '{', '}', '%']:
        clean_pass += ('{' + c + '}')
    else:
        clean_pass += c
print(clean_pass)
© www.soinside.com 2019 - 2024. All rights reserved.