【问题标题】:Pywinauto - how to get the 'value' property of an element (progress bar) which will dynamically changingPywinauto - 如何获取将动态变化的元素(进度条)的“值”属性
【发布时间】:2020-08-26 05:24:24
【问题描述】:

我正在尝试自动化 wpf 应用程序后端 = uia,对于进度条,我需要获取动态变化的“值”属性,但是当我使用 window_text() 时,我正在获取 '',然后我尝试在此包装器中传递控件pywinauto.application.controls.uia_controls.UIAElementInfo(ctrl).name 得到这个错误TypeError("UIAElementInfo object can be initialized " + \ "with integer or IUIAutomationElement instance only!) 最后尝试在下面的Progresswrapper 类中传递元素pywinauto.controls.common_controls.ProgressWrapper(element_info).get_position() 我得到的element_info 应该是hwndwrapper。

这是我的代码 app.py

  1. 启动app.exe

    app = pywinauto.application.Application(backend='uia').start('app.exe')
    
  2. 识别窗口

    wind = app.window(auto_id="someid")
    
  3. 找到进度条控件

    ctrl = wind.window(auto_id='progress') 
    
  4. 获取控件进度条的文本

    ctrl.window_text()
    

【问题讨论】:

    标签: python wpf automation pywinauto inspect


    【解决方案1】:

    方法ctrl.get_value() 是您所需要的。如果您不知道自己在做什么,则不应尝试手动创建包装器。

    【讨论】:

    • 如果它不起作用怎么办?对于ListItemWrapper,我得到AttributeError: 'ListItemWrapper' object has no attribute 'value'。但是,Inspect.exe 显示正确的值。
    • 方法 .get_value() 和属性 Value 有不同的名称。请使用您正在尝试的更多代码编辑您的问题。 Pywinauto 方法名称不必与 Inspect.exe 中的相同。
    • 另外请将 Inspect.exe 从 MSAA 切换到 UI 自动化模式。
    • 嗯,很有趣。是的,get_value 工作正常,谢谢!
    猜你喜欢
    • 2018-01-25
    • 2017-11-10
    • 2012-10-19
    • 2013-08-11
    • 2013-11-06
    • 1970-01-01
    • 2017-01-30
    • 2018-11-11
    • 1970-01-01
    相关资源
    最近更新 更多