import pywinauto app = pywinauto.Application("uia").start( "Notepad.exe") # 选择主窗口 dlg = app["Notepad"] dlg.print_control_identifiers()
时间: 2024-04-22 10:26:33 浏览: 25
你的代码使用pywinauto库打开了记事本应用程序,并选择了主窗口。然后,你使用了print_control_identifiers()函数来打印主口的控件标识符。
如果你遇到了ElementNotFoundError错误,请确保记事本应用程序已经打开并处于活动状态。另外,请确保你的代码与记事本窗口的属性匹配,例如标题、类名或其他唯一标识符。
如果问题仍然存在,请提供更详细的错误消息和上下文信息,以便我能够更好地帮助你解决问题。
相关问题
from pywinauto.application import Application app = Application(backend="uia").start("devmgmt.msc") 设备管理器未打开
如果设备管理器未能打开,可能是因为`devmgmt.msc`文件路径未被正确添加到系统环境变量中。尝试使用绝对文件路径来打开设备管理器。例如,如果你的设备管理器文件位于`C:\Windows\System32\devmgmt.msc`,则代码应该如下:
```python
from pywinauto.application import Application
app = Application(backend="uia").start(r"C:\Windows\System32\devmgmt.msc")
```
如果仍然无法打开设备管理器,请检查你的系统环境变量设置是否正确。
import pywinauto import inspect app = pywinauto.Application().connect(title='窗口标题') window = app.window(title='窗口标题') ctrls = inspect.getmembers(window, lambda c: isinstance(c, pywinauto.controls.win32_controls)) for ctrl in ctrls: print(ctrl)运行后提示TypeError: isinstance() arg 2 must be a type, a tuple of types, or a union错误
这个错误的原因是在使用 `isinstance` 函数时传入了错误的参数。`isinstance` 函数的第二个参数应该是一个类型(type)或类型元组(tuple of types),用于判断第一个参数是否是该类型或类型元组中的任意一种类型的实例。因此,这里应该将 `pywinauto.controls.win32_controls` 改为一个类型或类型元组。
你可以尝试将代码修改为以下形式来解决这个问题:
```python
import pywinauto
import inspect
app = pywinauto.Application().connect(title='窗口标题')
window = app.window(title='窗口标题')
ctrls = inspect.getmembers(window, lambda c: isinstance(c[1], pywinauto.controls.win32_controls.__class__))
for ctrl in ctrls:
print(ctrl)
```
这里我们使用了 `pywinauto.controls.win32_controls.__class__` 来获取 `win32_controls` 这个类的类型,然后将其传入 `isinstance` 函数中。同时,由于 `inspect.getmembers` 函数返回的是一个列表,其中每个元素都是一个键值对,所以在 lambda 函数中使用 `c[1]` 来获取每个控件的实例。