使用 pywinauto 从组合框中选择一个项目

Vin*_*hew 4 pywinauto

我正在尝试使用 pywinauto 自动化 Visual Basic 应用程序,后端 =“win32”。除了从组合框中选择一项之外,我可以处理所有事情。这个特定的组合框取决于另一个组合框的选择

这是代码:

app.ThunderRT6MDIForm.xxxxx.ComboBox3.select("abc") # this correctly selects from the combobox
app.ThunderRT6MDIForm.xxxxx.ComboBox4.select(1) #This one gives error
Run Code Online (Sandbox Code Playgroud)

以及相同的错误:

IndexError: Combobox has 0 items, you requested item 1 (0 based)
Run Code Online (Sandbox Code Playgroud)

控制标识符返回:

        ComboBox - 'abc'    (L136, T206, R376, B227)
       | ['ComboBox3', 'abc co-brandingComboBox2']
       | child_window(title="abc", class_name="ThunderRT6ComboBox")
       | 
       |    | Edit - ''    (L139, T234, R356, B249)
       |    | ['abc co-brandingEdit10', 'Edit12']
       |    | child_window(class_name="Edit")

        ComboBox - ''    (L136, T157, R376, B178)
       | ['4', 'ComboBox4']
       | child_window(class_name="ThunderRT6ComboBox")
       |    | 
       |    | Edit - ''    (L139, T160, R356, B175)
       |    | ['5', 'Edit14']
       |    | child_window(class_name="Edit")
Run Code Online (Sandbox Code Playgroud)

Vin*_*hew 5

我找到了解决此问题的临时方法。我发现按 Alt + Down 键打开组合框并给出列表。因此,我也在代码中使用了相同的逻辑,并且它有效!

 app.ThunderRT6MDIForm.xxxxx.ComboBox4.Edit14.type_keys("%{DOWN}")
 app.ThunderRT6MDIForm.xxxxx.ComboBox4.select("item") 
Run Code Online (Sandbox Code Playgroud)