python - 从基于 C# 的应用程序执行 Pywinauto 脚本很慢
问题描述
5月7日更新,历史信息在“****************************”行下
@Jakub Sowa 我无法在您的下方添加任何评论,我尝试了 top_window 和 children(),它似乎对我不起作用。狐狸示例 tp = cg.appConnect().top_window() tp.children(title="finance", control_type="Button").draw_outline()
错误发生如下-- AttributeError: 'list' object has no attribute 'draw_outline'
那么你能给我一个具体的例子来说明它在你的情况下是如何工作的吗?
我已经做了几个月的 pywinauto 自动化,但是对于某些代码它运行缓慢,例如:
我单击以下代码中的确认按钮:
self.dlg = cg.appConnect().window(title="Hygine_Platform", control_type="Window")
self.regdlg = self.dlg.child_window(title ="registry", auto_id ="FormRegBalance", control_type="Window")
self.okbtn = self.regdlg.child_window(title="confirm",auto_id="btnOk",control_type="Button")
def clickConfSettle(self):
self.okbtn.click_input()
如果我使用 clickConfSettle(),至少需要五秒钟才能完成。有没有人有同样的问题,有什么解决办法吗?我检查了控件的结构,它很简单,只有 3 个级别。
解决方案
我已经使用该库一两个星期了,但我认为如果您尽快获得顶部窗口的窗口规范及其子窗口,那么您的 应用程序应该self.app.top_window().children()
在哪里运行得更快。app
pywinauto.Application(backend='uia', allow_magic_lookup=False).connect(handle=self.handle)
它使 dict 查找远离您,但是,您仍然可以通过索引访问项目或迭代它们(在我的情况下,这比使用child_window
方法快得多)。我不确定点击部分,因为它可能需要更多时间,但在大多数情况下 - 我的程序中的所有查找在更改后都低于 1 秒。
推荐阅读
- vba - 如何显示已实现目标的进度条?
- python - Python Pandas groupBy 条件
- radare2 - Radare2“块大小太大”
- mongodb - 如何在 $match 聚合中找到一组值并将结果分组?
- reactjs - Symfony ApiPlatform React - CORS
- ios - 如何使用 SQLite.swift 类型安全 API 链接条件?
- powershell - Powershell:已添加项目。字典中的键:'' 正在添加的键:'' 更新 AD 属性时
- c++ - 我应该让我的opencv校准程序设置我的相机固有K值,特别是Cx和Cy,还是手动设置?
- java - 为什么同一个程序在 Windows 和 Mac 上的运行方式不同
- java - 找不到 Spring 参考示例包 (org.springframework.samples)