【问题标题】:Pywinauto can't select the correct elementsPywinauto 无法选择正确的元素
【发布时间】:2021-03-19 04:34:31
【问题描述】:

我一直在尝试使用 pywinauto 自动执行重复性任务。它涉及使用特定的打印机软件加载和打印文件。我已经设法自动启动,但在打开“打开”对话框后卡住了。它引发了 TimeoutError 和 ElementNotFoundError

def print_file(app, file_name):
    # find the main window
    pexp = app.window(title_re = '.*Design.*')
    # ctrl+o for open dialog
    pexp.type_keys("^O")
    # this works - output attached
    pexp.print_control_identifiers()
    
    # this should work but it doesn't 
    dialog = app.window(title_re = 'Open')
    dialog.print_control_identifiers()

    # this should work but it doesn't either
    app['OpenDialog']['File name:2']['File name:Edit'].set_edit_text(file_name)
    app['OpenDialog']['ComboBox']['OpenButton'].click()

输出可以在下面找到

https://pastebin.com/urxtXsK3

还有错误信息:

https://pastebin.com/q0UNE1wM

更新:我已成功填写文件名编辑字段,但找不到单击打开拆分按钮的方法,如下所示:

 |    | 
       |    | SplitButton - 'Open'    (L868, T563, R956, B589)
       |    | ['OpenSplitButton', 'SplitButton6', 'Open4']
       |    | child_window(title="Open", auto_id="1", control_type="SplitButton")
       |    |    | 
       |    |    | SplitButton - ''    (L941, T563, R956, B589)
       |    |    | ['SplitButton7', 'File name:SplitButton']
       |    | 

我一直在尝试在我想要的文件名后输入 {ENTER},但没有成功。

尽管有上面的 print_control_identifiers(),如果我画出“SplitButton6”的轮廓,它会在打开旁边显示向下箭头。但是,如果我pexp['SplitButton5'].draw_outline() 它将在整个拆分按钮上绘制轮廓。好像有什么可疑的地方。

我现在正在尝试 pexp['SplitButton5'].click_input() 关闭对话框,但不会像手动单击“打开”按钮那样显示下一个对话框。有任何想法吗?我猜这个软件质量差有很多原因。

在其上调用其他一些方法会产生好坏参半的结果:

【问题讨论】:

    标签: python ui-automation pywinauto


    【解决方案1】:

    这可能与“打开”按钮的类型有关。实际上,此按钮的类型会根据情况而有所不同:“按钮”或“拆分按钮”。

    【讨论】:

    • 感谢您的回复,David,在尝试单击对话框中的“打开”按钮之前,问题就出现了,因为我什至无法填写文件名编辑字段。
    • 可能是因为 OpenDialog 不是来自您的应用程序的进程。在这种情况下,您必须使用 pywinauto.Desktop。
    • 知道如何判断它是否不是应用程序的过程吗?
    • 通常这种打开对话框可以很容易地用 pywinauto.Desktop 自动化。我正在开发基于 Pywinauto 的记录/回放工具:pywinauto-recorder.readthedocs.io 该工具的开发仍处于非常早期的开发阶段,问题是它不适用于所有 PC。但也许你可以试试。告诉我是否有帮助。
    • 嘿,大卫,我试用了 Pywinauto 记录器。也许是因为我在虚拟框中使用了一个 windows vm,但它使我的机器崩溃了。有电子邮件可以联系到您吗?
    猜你喜欢
    • 1970-01-01
    • 2019-10-15
    • 2011-07-06
    • 1970-01-01
    • 1970-01-01
    • 2018-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多