【问题标题】:accessing ListViewItem via pwinauto通过 pwinauto 访问 ListViewItem
【发布时间】:2021-07-31 06:18:00
【问题描述】:

pywinauto 将我的 GUI 对象识别为列表视图。 gui 对象是一个网格,每个单元格中都有复选框。我正在尝试通过 ListView.items()[index], item 操作单击某个复选框。 (所有项目、复选框都被识别并驻留在 ListView.items() 下)。

问题是某些项目没有响应点击。 例如:下面的代码只点击了60%的item。

我尝试以任何其他可能的方式点击,使用点击、选择、检查并通过点击使用 double=True 标志。

for item in self.curr_win.ListView5.items():
    item.click()

*self.curr_win.ListView5 是我的列表视图对象

  • 我需要一种方法来控制所有复选框,我将不胜感激!
  • GUI 对象的图片如下

【问题讨论】:

  • 尝试在点击后添加延迟,即 time.sleep(0.25)
  • 您使用的是哪个后端?我的意思是它只是Application()Application(backend="uia")?两个后端有不同的 ListView 包装器。
  • @VasilyRyabov 我使用默认值,因为 uia 后端会在很长时间后响应。我不知道为什么,我在这个上看到了一个开放的错误。虽然说真的很慢,但我的意思是点击 5-6 秒,有时更多。 github.com/pywinauto/pywinauto/issues/256
  • @SachinPatole,没关系。 ListView 对象包含所有项目(显示在 gui 中),但是当我单击其中一些时,什么也没有发生。 * 我尝试通过 Evaluate Expression (Pycharm) 单击项目代码只是为了演示问题。
  • @VasilyRyabov 我更新了问题以提供更多信息,如有必要,我可以提供屏幕截图。

标签: python listviewitem pywinauto


【解决方案1】:

好的,对于“win32”后端,您可以将这些文档用于ListViewWrapper_listview_item 对象:https://pywinauto.readthedocs.io/en/latest/code/pywinauto.controls.common_controls.html#pywinauto.controls.common_controls._listview_item

for item in self.curr_win.ListView5.items():
    item.click(where="check")
    # or
    # item.click_input(where="check")

Item 方法.ensure_visible() 使不可见的项目自动滚动。

.click_input() 方法的不同之处在于它移动了真实的鼠标光标,可以使所有操作在调试时更加可见。

【讨论】:

  • 您好瓦西里,首先,感谢您的帮助!我只是尝试使用 item.click(where="check") 选项,虽然命令提示错误 - RuntimeError: Area ('check') not found for this list view item * 我刚刚添加了 ListView 对象的屏幕网格问题,我希望它有助于我验证我点击了正确的对象,它总共有 36 个项目,就像图片一样,36 个复选框。虽然点击仍然无法正常工作。
  • 我使用了 swapy/py_inspect 检查工具来确保它是正确的 ListView 对象。
  • 嗯...也许这些复选框是自绘的。但是您可能还有另一个机会使用Application(backend="uia")(在 py_inspect 中也选择“uia”后端)。您可以使用“uia”识别每个项目,并像对待任何其他包装对象一样探索其方法。
  • 在 uia 模式下,GUI 对象被标识为 ListBox5 且 control_type=List,我尝试使用 ListBox5.cells() 访问单个单元格。我有 6 个项目。每个 Item 都有一个包含 6 个 StaticWrapper 对象的列表(每个 StaticWrapper 代表一个单元格)。虽然我无法激活功能单击/检查某个单元格对象。我尝试使用 ListBox5.items(),同时获得 6 个 ListItemWrapper 对象。虽然,看起来这些对象不支持点击/检查功能。无论如何,UIA 模式的响应速度很慢,有时每次操作需要 20-30 秒。有什么想法吗?
  • 这个帖子可能有帮助:github.com/pywinauto/pywinauto/issues/256
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-07-23
  • 1970-01-01
  • 1970-01-01
  • 2015-03-21
  • 2017-01-06
  • 2013-02-09
  • 2013-06-13
相关资源
最近更新 更多