首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法访问pywinauto的hwndwrapper (包装器类)中的windows控件

无法访问pywinauto的hwndwrapper (包装器类)中的windows控件
EN

Stack Overflow用户
提问于 2016-02-11 06:55:12
回答 1查看 4.6K关注 0票数 1

我是 python 和 pywinauto 的新手,正在尝试使用SWAPY在TextBox (windows控件)中设置或获取文本,我有包装器类的类名。如何使用pywinauto中的类名(如Afx:633C0000:1008)访问包装器类中的控件?

代码语言:javascript
运行
复制
import pywinauto
import pywinauto.controls
from pywinauto.application import Application
app = Application().Connect(title=u'SAP', class_name='SAP_FRONTEND_SESSION')
sapfrontendsession = app.SAP
afxe = sapfrontendsession[u'Afx:633C0000:1008']

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-11 08:37:52

pywinauto提供了一个基于WindowSpecification和包装器的两级概念。窗口规范只是用来搜索所需控件的一组描述(在创建WindowSpecification时可能不存在)。如果找到了具体的包装器,则为实际存在的控件创建。在空闲控制台中,它看起来是这样的:

代码语言:javascript
运行
复制
>>> app.RowListSampleApplication
<pywinauto.application.WindowSpecification object at 0x0000000003859B38>
>>> app.RowListSampleApplication.wrapper_object()
<pywinauto.controls.win32_controls.DialogWrapper object at 0x0000000004ADF780>

窗口规范只能有两个级别:app.WindowName.ControlName。可以用更详细的搜索标准来指定:

代码语言:javascript
运行
复制
app.window(title=u'SAP', class_name_re='^Afx:.*$')
app.SAP.child_window(class_name='Edit')

可能的window/child_window参数与元素中列出的参数相同。

非常好的Python特性可以在生产代码中隐藏wrapper_object()方法调用,所以您只需要为调试目的调用它。例如,这些语句是等价的(做同样的):

代码语言:javascript
运行
复制
app.WindowName.Edit.set_text(u'text')
app.WindowName.Edit.wrapper_object().set_text(u'text')

但是下面的语句返回不同的对象:

代码语言:javascript
运行
复制
app.WindowName.Edit # <WindowSpecification>
app.WindowName.Edit.wrapper_object() # <EditWrapper>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35332670

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档