gpt4 book ai didi

pywinauto - 如何通过 pywinauto 在按钮或文本字段上执行单击操作

转载 作者:行者123 更新时间:2023-12-05 01:03:33 27 4
gpt4 key购买 nike

我正在使用 pywinauto 进行自动化单击 DiffDaff 软件上的某个按钮。

我的意图是:

  • 第一步:打开DiffDaff软件
  • 第二步:点击“关于”按钮
    from pywinauto.application import Application

    app = Application.start("C:\Program Files\DiffDaff\DiffDaff.exe")

    app.About.Click()

  • 但是,我卡在第 2 步,控制台显示错误:
      File "build\bdist.win32\egg\pywinauto\application.py", line 238, in __getattr__
    File "build\bdist.win32\egg\pywinauto\application.py", line 788, in _resolve_control
    pywinauto.findbestmatch.MatchError: Could not find 'About' in '['', u'DiffDaff - Compare Files, Folders And Web Pages', u'Internet Explorer_Hidden', u'DiffDaff - Compare Files, Folders And Web PagesDialog', 'Dialog']'

    其中, '', u'DiffDaff - 比较文件、文件夹和网页', u'Internet Explorer_Hidden', u'DiffDaff - 比较文件、文件夹和网页对话框', 'Dialog' 是软件的标题

    另外,使用命令 'app.dialogs.print_control_identifiers()'要知道“关于”按钮的确切位置,有输出:
    Button - '&About'   (L750, T388, R834, B411)
    '&About' '&AboutButton' 'Button3'

    但是上面的参数很难理解(L750、T388、...是什么/在哪里) - 你想解释上面所有参数的平均值吗?

    以及执行“单击”按钮的方式?

    谢谢。

    最佳答案

    pywinauto需要从应用程序对象到控制方法的 2 级层次结构。任何调用的结构是

    app.<DialogName>.<ControlName>.<method>(<params>)

    在你的情况下它应该看起来像
    app.Dialog.About.click()

    如果您需要更逼真的点击,请使用 click_input()以用户身份移动光标并单击控件。 click()只发送 WM_CLICK它也不太可靠。
    print_control_identifiers()方法打印以下信息:
    <ControlType> - '<Name a la WindowText>' (<rectangle>)
    possible names which are most likely useful for object attribute access

    提到的代码等效于以下内容:
    app.window(best_match='Dialog', top_level_only=True).child_window(best_match='About').click()
    pywinauto通过覆盖 __getattribute__ 来简化此类结构方法。

    关于pywinauto - 如何通过 pywinauto 在按钮或文本字段上执行单击操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24606219/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com