Python python 中的应用程序的 GUI 自动化中,如何获取下拉框所有项的值,这个要怎么搞?

清明雨上书 · 2022年12月30日 · 最后由 陶刚 回复于 2023年11月24日 · 5953 次阅读

请教一个问题:应用程序的 GUI 自动化中,如何获取下拉框所有项的值,这个要怎么搞?我要获取红色框内的值!
因为我要去判断是否有乱码,所以需要获取下拉框的值,

如图中红色区域是要获得的值,

已有的代码:

combox = uiautomation.ComboBoxControl(Name=u' 下', control_type='ComboBox')
combox.SetFocus()
log.debug(f'下拉框的信息:{combox}')

执行结果:
[yxjy_process.py:into_data-->245] 下拉框的信息:ControlType: ComboBoxControl ClassName: AutomationId: Rect: (791,459,1120,484)[329x25] Name: ' 下' Handle: 0x0(0)

缺少需要的数据,
目标信息:
Other Props: Object has no additional properties
Children:

"��Դ��" 列表项目
"QXMC" 列表项目
"����" 列表项目
Ancestors: " 下" 组合框
树结构:
child_window(title=" 下", control_type="ComboBox")
|
| ListBox - '' (L0, T0, R0, B0)
| ['ListBox']
| |
| | ListItem - '��Դ��' (L0, T0, R640, B18)
| | ['��Դ��ListItem', 'ListItem', '��Դ��', 'ListItem0', 'ListItem1']
| | child_window(title="��Դ��", control_type="ListItem")
| |
| | ListItem - 'QXMC' (L0, T18, R640, B33)
| | ['QXMC', 'QXMCListItem', 'ListItem2']
| | child_window(title="QXMC", control_type="ListItem")
| |
| | ListItem - '����' (L0, T33, R640, B51)
| | ['����', '����ListItem', 'ListItem3']
| | child_window(title="����", control_type="ListItem")

要获取的是 ListItem 后面的值,

有尝试过用 pywinauto,使用 dump_tree()/children_texts() 然后结果不理想,获取到整个树之后再进行解析,但是结果不理想。

最佳回复

问题已经找到解决办法了,

共收到 4 条回复 时间 点赞

下拉框可以展开后,依次选中,每次选中把字符串存储下来。
然后可以用字符串的 unicode 转化为 GB2312 来判断是否有生僻字。

陈子昂 回复

主要是如果能依次选中的话,问题就好处理了,因为有出现乱码,所以没法依次选中.
我这个主要是判断有没有出现乱码的,所以最好是能够直接拿到下拉框的 title 的值。
dump_tree() 不能将结果写入到 txt,
children_texts() 也不能将结果写入到 txt
我就试过 TXT,不知道 xml,yaml 行不行,哎

问题已经找到解决办法了,

请问楼主是用的什么技术栈做的 GUI 自动化,我想试试在 QT 开发的 windows 客户端是否适合

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册