如何使用pywinauto在没有RDP的情况下展开或双击TreeItem

2024-10-02 00:32:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试展开或双击()树项。 当使用鼠标光标打开rdp并双击输入()时,此代码工作正常,但由于没有鼠标光标而关闭rdp时,此代码不工作

如果我尝试单击()或双击(),它们将不起作用

app = Application(backend="uia").connect(title='myApplication')
dlg = app.window(title='Control Panel of myApplication')

#this click() works without rdp
dlg.child_window(auto_id="MainPanelForm.gridLayoutWidget.MainPanelWidget.rightFrame.setupWidget.setupButton").click()
dlg.child_window(title="Система", control_type="TreeItem").double_click_input()

inspect.exeinspect.exe

如果我尝试dlg.child_window(title="Система", control_type="TreeItem").print_control_identifiers()

TreeItem - 'Система'    (L3102, T196, R3877, B220)
['СистемаTreeItem', 'Система', 'TreeItem']
child_window(title="Система", control_type="TreeItem")

我怎样才能用pywinauto做到这一点,或者这是不可能的,我需要用另一种方式来尝试

以下是我得到的方法:

Pattern object attributes: ['AddRef', 'GetCachedColumnHeaderItems',
'GetCachedRowHeaderItems', 'GetCurrentColumnHeaderItems',
'GetCurrentRowHeaderItems', 'QueryInterface', 'Release', '_AddRef',
'_IUIAutomationTableItemPattern__com_GetCachedColumnHeaderItems',
'_IUIAutomationTableItemPattern__com_GetCachedRowHeaderItems',
'_IUIAutomationTableItemPattern__com_GetCurrentColumnHeaderItems',
'_IUIAutomationTableItemPattern__com_GetCurrentRowHeaderItems',
'_IUnknown__com_AddRef', '_IUnknown__com_QueryInterface',
'_IUnknown__com_Release', '_QueryInterface', '_Release', '__bool__',
'__class__', '__cmp__', '__com_interface__', '__ctypes_from_outparam__',
'__del__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__',
'__format__', '__ge__', '__getattr__', '__getattribute__', '__gt__',
'__hash__', '__init__', '__init_subclass__', '__le__', '__lt__',
'__map_case__', '__module__', '__ne__', '__new__', '__reduce__',
'__reduce_ex__', '__repr__', '__setattr__', '__setstate__',
'__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_b_base_',
'_b_needsfree_', '_case_insensitive_', '_compointer_base__get_value',
'_idlflags_', '_iid_', '_methods_', '_needs_com_addref_', '_objects',
'_type_', 'from_param', 'value']

Tags: comchildreleasetitletyperdpwindowcontrol
1条回答
网友
1楼 · 发布于 2024-10-02 00:32:16

所有已知的远程执行方法都收集在Remote Execution Guide

您可能应该自定义RDP设置,以便在不丢失active desktop的情况下最小化/断开连接


下面我将介绍一些不太可靠的方法,这些方法可能不适用于某些应用程序,如Qt5

同样对于TreeItem,值得尝试方法.select(),它应该使用SelectionItem模式。无法在Inspect.exe中检查此模式。请参见屏幕截图:

enter image description here

也可以通过菜单“操作”尝试可用的模式

另外,对于您的情况,可用的模式是TableItem,它可以通过属性(而不是方法!).iface_table_item访问。只需按内置函数dir()列出此模式的所有可用方法:

attrs = dir(dlg.child_window(title="Система", control_type="TreeItem").iface_table_item)
print("Pattern object attributes: {}".format(attrs))

模式对象作为COM对象来自UIAutomationCore.dll。我们还没有在pywinauto中的任何地方使用它,但它可以作为任何普通Python对象使用和检查

相关问题 更多 >

    热门问题