发布
社区首页 >问答首页 >python pywinauto文件选择对话框

python pywinauto文件选择对话框
EN

Stack Overflow用户
提问于 2020-10-23 21:53:34
回答 1查看 1.3K关注 0票数 1

我正在为我们经常使用的特定组件自动更新固件。我已经完成了gui的自动化(和工作),除了这个特殊的屏幕。

我需要做的是让程序自动导航到正确的文件夹(在机器上标准化),并选择用于更新的正确文件。

到目前为止,我的代码如下:

代码语言:javascript
代码运行次数:0
复制
from pywinauto.application import Application

app = Application(backend='win32').connect(title_re=".*EBDS*", found_index=0)

main_dlg = app.window(title_re=".*EBDS*", found_index=0)

main_dlg.child_window(title="Launch Control Panel", control_type="System.Windows.Forms.Button").click()

sub_dlg = app.window(title_re=".*Bill Acceptor*", found_index=0)

sub_dlg.child_window(title="Open", control_type="System.Windows.Forms.Button").click()

sub_dlg.child_window(title="Download", control_type="System.Windows.Forms.Button").click()

file_dlg = app.window(title_re=".*download*", found_index=0)

它有两个子窗口,它们在单击后弹出,即main_dlg、sub_dlg和file_dlg。

我已经告诉它选择下载按钮,它会弹出“选择要下载的文件”窗口。

我现在需要做的是能够指定路径(其中显示此PC),更改文件类型(当前显示为Bin文件),并选择正确的文件。

我做了一个"print control identifier“,这里是那个输出的txt文件的链接(它超过3k行,所以我不想在这里粘贴它) Control Identifiers .txt

然后,我正确地(手动地)完成了将其放到需要的位置的步骤,并执行了另一个“打印控制标识符”。同样,这是超过3k行的长度,所以这是一个Link to that output.

假设我这样做是正确的,那么gui中的文件路径位置是:file_dlg.child_window(title="Select a file to download.", class_name='#32770').child_window(class_name="WorkerW").child_window(class_name="ReBarWindow32").child_window(class_name="Address Band Root").child_window(class_name="msctls_progress32").child_window(class_name="Breadcrumb Parent").child_window(title=".*Address:*", class_name="ToolbarWindow32")

问题是,我如何具体地与该对象进行交互?.click()或.sendkeys()都出错。

如果你能弄清楚如何改变文件类型,你就会得到加分。

我对一种更简单/不同的方法持开放态度,但是这必须部署到几百台屏幕尺寸不同的机器上,因此我不能使用pyautogui和像素计数。

有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2020-10-24 00:22:34

您可以输入编辑框的完整文件路径,然后单击“打开”按钮。它应该看起来像这样:

代码语言:javascript
代码运行次数:0
复制
file_dlg = app.window(title_re=".*Select a file to download*", found_index=0)
file_dlg.FileNameEdit.set_edit_text("full_path_to_file")
file_dlg.child_window(title="&Open", control_type="Button").click()

我假设你必须绕过.click_input().type_keys(...)的使用,因为它们需要活动桌面,而这在一个大的机器池中很难维护。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64501327

复制
相关文章

相似问题

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