【问题标题】:Unable to use print_control_identifiers() for my desktop application in pywinauto无法在 pywinauto 中为我的桌面应用程序使用 print_control_identifiers()
【发布时间】:2017-04-03 05:09:04
【问题描述】:

您好,我无法将“print_control_identifiers()”用于我的桌面应用程序。 我正在使用 a) Python 3.5.3(32 位,因为我正在自动化的应用程序是 32 位) b) Pywinauto 0.6.2。 我的简单代码如下:

`from pywinauto import Application
app = Application(backend="uia")    
app = Application().start(r"C:\Program Files (x86)\Trane\TRACE 3D  Plus\TRACE™ 3D Plus.exe")  
app['TRACE™ 3D Plus'].print_control_identifiers()`

当我运行上述命令时,我在命令提示符中得到以下信息:

Traceback (most recent call last):
File "D:\Python\lib\site-packages\pywinauto\application.py", line 243, in   __re
solve_control
criteria)
File "D:\Python\lib\site-packages\pywinauto\timings.py", line 424, in     wait_until_passes
raise err
pywinauto.timings.TimeoutError

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "inspect.py", line 4, in <module>
app['TRACE\u2122 3D Plus'].print_control_identifiers()
File "D:\Python\lib\site-packages\pywinauto\application.py", line 573, in  prin
t_control_identifiers
this_ctrl = self.__resolve_control(self.criteria)[-1]
File "D:\Python\lib\site-packages\pywinauto\application.py", line 246, in __re
solve_control
raise e.original_exception
File "D:\Python\lib\site-packages\pywinauto\timings.py", line 402, in   wait_unt
il_passes
func_val = func(*args)
File "D:\Python\lib\site-packages\pywinauto\application.py", line 188, in __ge
t_ctrl
dialog = self.backend.generic_wrapper_class(findwindows.find_element(**crite
ria[0]))
File "D:\Python\lib\site-packages\pywinauto\findwindows.py", line 84, in   find_
element
elements = find_elements(**kwargs)
File "D:\Python\lib\site-packages\pywinauto\findwindows.py", line 294, in find
_elements
elements = findbestmatch.find_best_control_matches(best_match, wrapped_elems
)
File "D:\Python\lib\site-packages\pywinauto\findbestmatch.py", line 534, in  fi
nd_best_control_matches
raise MatchError(items = name_control_map.keys(), tofind = search_text)
pywinauto.findbestmatch.MatchError: Could not find 'TRACE\u2122 3D Plus' in   'dic
t_keys([])'

谁能告诉我问题是什么以及我可以做些什么来解决它?

提前致谢!

【问题讨论】:

    标签: python-3.x ui-automation pywinauto


    【解决方案1】:

    替换这些命令

    app = Application(backend="uia")    
    app = Application().start(r"C:\Program Files (x86)\Trane\TRACE 3D  Plus\TRACE™ 3D Plus.exe")
    

    用这个:

    app = Application(backend="uia").start(r'"C:\Program Files (x86)\Trane\TRACE 3D  Plus\TRACE™ 3D Plus.exe"')
    

    因为如果不使用任何参数,您将使用默认 backend="win32" 重新创建 app 对象。如果很难理解,我建议先学习 Python 课程。这里需要基本的 Python 编程技能才能理解发生了什么。

    【讨论】:

    • 您好 Vasily,感谢您的意见。我正在学习 Python 以更好地理解事物。不过,我在课程中还没有走多远。我也试过你提到的代码。但是我得到了与上面发布的相同的错误。
    • 添加双引号,因为路径包含空格!请参阅编辑后的答案。
    • 顺便问一下,我可以下载这个 Trace 3D Plus 软件吗?也许是一些试用版。
    • 在此代码中,我在命令提示符中收到“应用程序启动错误”和“系统找不到指定的文件”消息。 Vasily,这个产品还没有上市,所以你还找不到它的试用版。
    猜你喜欢
    • 2019-03-13
    • 1970-01-01
    • 2022-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多