我正在使用 pbixrefresher 自动刷新 PBI 报告,效果很好,但是我还需要将数据表保存为 csv 文件,方法是将表复制到 Excel 中,然后另存为 csv,因为该表是较大,可在 PBI 中导出为 csv(约 60k 行)。我可以让 pywinauto 进入 PBI 中的数据 View ,并且感谢此处的一些帮助,出现了下拉菜单(上下文菜单或弹出菜单)。我可以在菜单中按 Tab 键找到所需的选项,但当我使用 click_input('left') 时没有任何反应。菜单仍然显示并且不采取任何操作。代码如下:
import time
import os
from pywinauto.application import Application
from pywinauto import timings
timings.after_clickinput_wait = 1
WORKBOOK = "C:/BBSDMthly/DA_AgentList.pbix"
PROCNAME = "PBIDesktop.exe"
os.system('start "" "' + WORKBOOK + '"')
app = Application(backend = 'uia').connect(path = PROCNAME)
win = app.window(title = 'DA_AgentList - Power BI Desktop')
time.sleep(5)
win.wait("enabled", timeout = 300)
win.Save.wait("enabled", timeout = 300)
win.set_focus()
win.Data.click_input()
win.Save.wait("enabled", timeout = 300)
win.wait("enabled", timeout = 300)
win.click_input(button = 'right')
win.Save.wait("enabled", timeout = 300)
win.wait("enabled", timeout = 300)
win.set_focus()
win.type_keys("{VK_TAB 7}")
win.click_input(button='left')
我已经搜索了与此有关的其他查询,并发现了几个但我尝试过的选项都不起作用。例如,我尝试过:
app.PopupMenu.wait('visible', timeout=15).menu().get_menu_path('复制表格')[0].click_input()
返回:
`文件“C:\Program Files\Anaconda3\lib\site-packages\pywinauto\timings.py”,第 375 行,在 wait_until 中 引发错误
超时错误:超时`
我也尝试过:
app.ContextMenu.child_window(title="复制表格", control_type="MenuItem").click_input()
返回了一个 MatchError:
MatchError:在“dict_keys(['DA_AgentList - Power BI DesktopDialog', 'Dialog', 'DA_AgentList - Power BI Desktop'])”中找不到“ContextMenu”
我也尝试过:
app.top_window().menu.item_by_path('复制表格')[0].click_input()
返回的
MatchError:在“dict_keys(['System'])”中找不到“复制表”
我尝试使用 print_control_identifiers 来获取有关下拉菜单的更多信息,但返回的内容似乎与它无关。不幸的是,我没有检查.exe,因此无法使用它来获取更多信息。
有人可以帮我解决这个问题吗?
最佳答案
我似乎已经弄清楚如何从下拉菜单中选择复制表。我在 GitHub 上发现 inform.exe 是独立的,因此设法在没有任何管理员权限问题的情况下获得它。使用inspect.exe,我获得了复制表的坐标,并使用下面的代码单击按钮:
win.click_input(coords=(754,306))
win.Save.wait("enabled", timeout = 300)
win.wait("enabled", timeout = 300)
win.set_focus()
这已经工作了好几次了,看来已经解决了我的问题。现在我需要做的就是弄清楚如何将数据粘贴到 Excel 中!
关于python - 如何使用 pywinauto 从上下文菜单中选择菜单项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58448730/