【问题标题】:Pywinauto has gone nutsPywinauto 疯了
【发布时间】:2021-10-01 11:34:50
【问题描述】:

下面是代码和错误的图片:

Code1

以下是类似问题但使用不同代码行的图像:

Code2

Code2

Code2

Code2

我已经上传了code_sn-p的图片。有时Code1 在以下行中起作用dlg.print_control_identifiers()

当我重新运行代码时,很多时候它不会。

我在不同的场景和错误中上传了 4 张不同的 Code2 图像。我非常沮丧。有人可以指导我吗?

可能的错误

ElementAmbiguousError: There are 2 elements that match the criteria {'title_re': 'Miracle', 'top_level_only': False, 'backend': 'uia', 'process': 23860}

【问题讨论】:

  • 欢迎来到 StackOverflow。请复制你的代码,不要放截图

标签: python pywinauto


【解决方案1】:

如果您想消除搜索歧义(仅找到一个元素),请在child_window() 关键字中添加更详细的条件。通常我们建议将titlecontrol_type 结合使用(使用control_type 也可以提高性能)。如果最终放弃,请尝试将found_index=0 关键字添加到child_window() 条件。它在过滤所有其他关键字后应用。

【讨论】:

  • 是的,我找到了绕过ElementAmbigousError 的方法,但我在这里问这个问题的主要原因是错误MatchError: Could not find 'xyz' in 'dict_keys([ ])'。我从app.windows() 获取窗口的名称,并在dlg = app[ xyz ] 中复制粘贴相同的字符串,但我得到了 MatchError。
  • 我猜你试过dlg = app["xyz"],对吧?此属性或项目访问权限等同于app.window(best_match="xyz")
  • 那么您建议使用app.window(best_match="xyz") 代替吗?
  • 没有必要。这只是为了更好地理解它是如何工作的。当然,像app.xyz 这样的经典属性访问看起来更加紧凑和美观。
  • 好吧,best_match 似乎对我有用,而不是 app.xyz。谢谢你让我觉得你推荐了best_match 方法:-)
猜你喜欢
  • 1970-01-01
  • 2011-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-14
  • 2014-10-27
相关资源
最近更新 更多