Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python pywinauto没有';t将控件标识为TabControl_Python_Pywinauto - Fatal编程技术网

Python pywinauto没有';t将控件标识为TabControl

Python pywinauto没有';t将控件标识为TabControl,python,pywinauto,Python,Pywinauto,Inspect.exe已将该控件标识为TabControl,但pywinauto无法识别该控件。图片如下** dump_tree给出了以下内容,控件类型是“C1.Win.C1 command.C1 dockingtabage”,这是一个 pywinauto的HwndWrapper对象不是tabcontrol: >>> AlloyTabDocument = addConfigWnd.child_window(auto_id="AlloyTabDocument") >&g

Inspect.exe
已将该控件标识为TabControl,但pywinauto无法识别该控件。图片如下**


dump_tree
给出了以下内容,控件类型是
“C1.Win.C1 command.C1 dockingtabage”
,这是一个

pywinauto的
HwndWrapper
对象不是tabcontrol:

>>> AlloyTabDocument  = addConfigWnd.child_window(auto_id="AlloyTabDocument")
>>> print(AlloyTabDocument.wrapper_object())
hwndwrapper.HwndWrapper - '', WindowsForms10.Window.8.app.0.13965fa_r6_ad1

这个问题的根本原因是MS UI自动化方法毫无例外地存在,但实际上对给定的小部件什么都不做

解决方法是按方法选择选项卡。
此代码适用于pywinauto 0.6.8:

import pywinauto
from pywinauto.application import Application
import pywinauto.uia_defines as uia_defs

app = Application(backend="uia").connect(path='wfControlExplorer.exe')
explorer = app.window(class_name="WindowsForms10.Window.8.app.0.1a8c1fa_r14_ad1", auto_id='Explorer')
overview = explorer.child_window(class_name='WindowsForms10.Window.8.app.0.1a8c1fa_r14_ad1', auto_id='Overview')
tabs = overview.child_window(class_name="WindowsForms10.Window.8.app.0.1a8c1fa_r14_ad1", control_type="Tab")
# tabs.dump_tree()
# tabs.select(2)
uia_defs.get_elem_interface(tabs.children()[2].element_info.element, "LegacyIAccessible").DoDefaultAction()

如何创建
Application()
对象?使用哪个后端?看起来您正在使用默认后端,即
“win32”
,但您必须使用
应用程序(backend=“uia”)
使pywinauto执行与
Inspect.exe
相同的操作。谢谢@VasilyRyabov这解决了问题,但现在选择似乎不起作用。可能是因为它是ComponentOne选项卡控件。是否有方法访问选项卡项属性(如rect)以单击相同的。抱歉,延迟。我们需要通过live应用程序来了解这一点。刚刚在GitHub上提交了一个问题:谢谢你回来。控件的演示是,在这里的控件资源管理器->导航和布局->停靠选项卡
import pywinauto
from pywinauto.application import Application
import pywinauto.uia_defines as uia_defs

app = Application(backend="uia").connect(path='wfControlExplorer.exe')
explorer = app.window(class_name="WindowsForms10.Window.8.app.0.1a8c1fa_r14_ad1", auto_id='Explorer')
overview = explorer.child_window(class_name='WindowsForms10.Window.8.app.0.1a8c1fa_r14_ad1', auto_id='Overview')
tabs = overview.child_window(class_name="WindowsForms10.Window.8.app.0.1a8c1fa_r14_ad1", control_type="Tab")
# tabs.dump_tree()
# tabs.select(2)
uia_defs.get_elem_interface(tabs.children()[2].element_info.element, "LegacyIAccessible").DoDefaultAction()