Python 3.x 尝试使用Pywinauto:AttributeError向应用程序发送文本时出错

Python 3.x 尝试使用Pywinauto:AttributeError向应用程序发送文本时出错,python-3.x,pywinauto,Python 3.x,Pywinauto,我正在使用Pywinauto自动化一些与在浏览器登录会话期间打开的应用程序的交互步骤 让我们调用应用程序.exe。它实际上是一个Chrome扩展,可以打开并提示输入密码 import pywinauto as pwa from pywinauto import application from pywinauto import keyboard app = application.Application() app = app.Connect(path=r"C:\path\program.ex

我正在使用Pywinauto自动化一些与在浏览器登录会话期间打开的应用程序的交互步骤

让我们调用应用程序.exe。它实际上是一个Chrome扩展,可以打开并提示输入密码

import pywinauto as pwa
from pywinauto import application
from pywinauto import keyboard

app = application.Application()
app = app.Connect(path=r"C:\path\program.exe")                 
win.Part.Click() #not completely sure why i do this
app['Insert password']['Edit'].send('password')
看起来我可以连接到程序,但是当我试图向程序发送文本时,我得到了一个错误。当我运行上述命令时,会发生此错误:

AttributeError: Neither GUI element (wrapper) nor wrapper method 'send' were found (typo?)
如果我替换这个:

app['Insert password']['Edit'].send('password')
为此:

app['Insert password'].SendKeys.send('password')
我得到这个错误:

MatchError: Could not find 'SendKeys' in 'dict_keys(['Insert password for MyName:Static', 'Static', 'Insert password for MyName:Edit', 'Edit', 'OK', 'OKButton', 'Button', 'Button0', 'Button1', 'Button2', 'Cancel', 'CancelButton', 'Insert password for MyName:Static0', 'Insert password for MyName:Static1', 'Insert password for MyName:Static2', 'Insert password for MyName:', 'Static0', 'Static1', 'Static2'])'
没有任何控件的方法send。SendKeys不是一个方法,而是模块键盘中的一个函数,因此正确的用法是键盘。SendKeys是“密码”

但是方法.type_keys'password'将控件置于焦点,然后执行与keyboard.SendKeys相同的操作。如果密码包含空格,则可能需要使用with_spaces=True。像%这样的特殊符号必须转义,因此:{%}。此方法功能强大,因为它支持Alt、Shift、Ctrl等热键组合。请参阅。适用于您的案例的用法:

应用程序['Insert password']['Edit']。键入密钥'password',空格=True

set\u edit\u text“password”可能更有用:它不逐字符键入键,而是将整个原始文本发送到控件,不支持特殊键,只支持文本。此方法不要求控件处于焦点。