【问题标题】:QT automation with pywinauto使用 pywinauto 实现 QT 自动化
【发布时间】:2020-04-23 02:31:36
【问题描述】:

我正在尝试使用 pywinauto 自动化 QT 应用程序,问题是 pywinauto 似乎无法单击或选择大多数对象,并且当它执行时,它们似乎与我指定的对象完全随机。即使使用诸如“click_input”之类的函数也能正常执行,但该项目从未真正被点击过。 Pywinauto 显然可以识别我尝试单击的按钮,甚至将其打印为“pywinauto.application.WindowSpecification”对象。我注意到 pywinauto 在 QT 应用程序方面存在一些问题,因此我们将不胜感激。谢谢你。

anki_App = Application(backend="uia").start(anki_Path)
anki_App.top_window().wait("Visible") #Wait for Anki's sync to server
anki = anki_App.window(title_re=r".* - Anki", class_name="AnkiQt")
anki['Import File'].click_input()

来自 anki.print_control_identifiers() 结果的片段,因为内容太大。

Button - 'Import File'    (L1751, T875, R1867, B910)
['Import File', 'Import FileButton', 'Button6']
child_window(title="Import File", control_type="Button")

编辑:进行了一些建议的更改,但问题仍然存在。点击事件似乎没有带来任何错误,但实际上没有发生“点击”。

【问题讨论】:

  • 嗨!对不起,如果我不清楚,第二个 sn -p 是所有代码,第一个截图显示了 print_control_identifiers 函数的结果。 anki_path 只是应用程序的路径。 apps.ankiweb.net
  • 请提供完整的追溯。 “似乎失败了”不是一个技术术语。也不推荐使用top_window()。它在调用时占据顶部窗口。在另一时刻,顶部窗口可能会发生变化,因此您必须再次致电.top_window()。如果顶部窗口更改的时刻是随机的,那么您的代码将随机运行!
  • 嗨!感谢您的建议,由于 pywinauto 无法找到所需的窗口,这是另一种解决方法。同样,我无法提供回溯,因为代码运行顺利,没有任何可见的错误。

标签: python qt automation pywinauto


【解决方案1】:

在 Pywinsauto 的 github 社区中询问后,我能够通过以下方式解决它:

anki_App = Application(backend="uia").start(anki_Path)
anki_App.top_window().wait("Visible") #Wait for Anki's sync to server
anki = anki_App.window(title_re=r".* - Anki", class_name="AnkiQt")
anki['Browse'].click_input(coords=(anki['Browse'].rectangle().left -1, anki['Browse'].rectangle().top -1), absolute = True)

问题是坐标错误。不过它们非常接近,因此只需单击左上角即可。再次感谢用户 airelil 帮助我解决问题。

Link to the issue

【讨论】:

    猜你喜欢
    • 2016-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-31
    • 1970-01-01
    • 2016-10-10
    • 2021-09-28
    • 2018-11-27
    相关资源
    最近更新 更多