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])
部分引起的;但我该如何解决它?
您需要取消转义括号,因为它们意味着一些关键代码,例如
{ENTER}
或 (ENTER)
。解决方案应如下所示:
typeNumber.type_keys(row[2].replace(')', '{)}').replace('(', '{(}'))
如果
row[2]
可能包含{
或}
,只需将其替换为({)
或(})
即可。
如果字符串中有“)”和“}”,则无法通过替换解决该问题,而是循环遍历每个字符并通过用括号括起来来修复:
password = 'ss{)747&FH%4)}'
clean_pass = ''
for c in password:
if c in ['(', ')', '{', '}', '%']:
clean_pass += ('{' + c + '}')
else:
clean_pass += c
print(clean_pass)