使用Pywinauto单击列表框中的数据项

2024-04-25 06:40:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试自动将Power BI报告发布到Power BI服务。我在这里找到了灵感-https://github.com/dubravcik/pbixrefresher-python

注意:这是我第一次使用pywinauto

单击“发布”按钮后,系统会提示您选择要在其中发布报表的工作区。这就是问题所在。一、 对于世界,无法让pywinauto从列表框中单击所需的工作区选项。下面是要发布的工作空间列表的示例

Fig 1

比如说,我想点击“c”选项。('a'现在被选中)现在我已经尝试了很多东西

Fig 2

当前代码如下所示:

    app_instance = Application(backend = 'uia').connect(path = PROCNAME)
    app_window = app_instance.window(title_re = ".*Power BI Desktop")
    app_window.wait("enabled", timeout = 300)
    app_window.Save.wait("enabled", timeout = 300)
    app_window.set_focus()

    # Publish
    if True:
        print("Publishing...")
        app_window.Publish.click_input()
        publish_dialog = app_window.child_window(auto_id = "KoPublishToGroupDialog")
        publish_dialog.print_control_identifiers()
#       publish_dialog.wait("enabled", timeout = 300)
#       modalDialog = publish_dialog.child_window(auto_id = "modalDialog")
#       modalDialog.wait("enabled", timeout = 300)
#       dItem = modalDialog.child_window(title=WORKSPACE,control_type="DataItem")
#       dItem.click_input()

根据树状结构,我认为还有另一个对话框可能“保存”列表框。然而,玩弄这些并没有产生结果。此时,我真的不知道如何让Python做出选择

我将永远感激你的帮助和建议。 谢谢


Tags: instancechildapp选项timeoutenabledwindowpublish
2条回答

我知道还没有人帮过你。也许我正在开发的工具可以帮助你。这是Pywinauto的录音工具。它记录鼠标和键盘动作并生成Python脚本。 生成的Python脚本使用覆盖Pywinauto的简单API函数,这些函数返回Pywinauto包装器

试试看,告诉我它是否对你有帮助。 https://github.com/beuaaa/pywinauto_recorder

这对我很有用:

dash_reference = 'PBI_file_name_without_extention'
app = Application(backend='uia').connect(title=dash_reference+" - Power BI Desktop")
dlg = app[dash_simplifier + " - Power BI Desktop"]
dlg.child_window(title="My workspace", control_type="DataItem", found_index=0).click_input() #select my workspace and publish
dlg.Select.click()

相关问题 更多 >