如何根据DataGrid中的文本值选择数据项

问题描述 投票:0回答:1

我正在尝试在数据网格内查找并选择一条记录。 (我正在使用 pywinauto 自动化应用程序)

enter image description here

上图是我尝试查找和选择的示例(场景是删除或修改记录)

如果显示如下,我可以使用直接代码,例如 app.Dialog.child_window(title="name1690963953988603900", control_type="Text").click_input

但是,如果它没有向下滚动(记录在眼睛中不可见),则会返回错误

Traceback (most recent call last):
  File "C:\Program Files\Python311\Lib\site-packages\pywinauto\application.py", line 250, in __resolve_control
    ctrl = wait_until_passes(
           ^^^^^^^^^^^^^^^^^^
  File "C:\Program Files\Python311\Lib\site-packages\pywinauto\timings.py", line 458, in wait_until_passes
    raise err
pywinauto.timings.TimeoutError

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "D:\get object project\ObjectIdentification.py", line 22, in <module>
    app.Dialog.child_window(title="name1690963953988603900", control_type="Text").click_input()
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Program Files\Python311\Lib\site-packages\pywinauto\application.py", line 379, in __getattribute__
    ctrls = self.__resolve_control(self.criteria)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Program Files\Python311\Lib\site-packages\pywinauto\application.py", line 261, in __resolve_control
    raise e.original_exception
  File "C:\Program Files\Python311\Lib\site-packages\pywinauto\timings.py", line 436, in wait_until_passes
    func_val = func(*args, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^
  File "C:\Program Files\Python311\Lib\site-packages\pywinauto\application.py", line 222, in __get_ctrl
    ctrl = self.backend.generic_wrapper_class(findwindows.find_element(**ctrl_criteria))
                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Program Files\Python311\Lib\site-packages\pywinauto\findwindows.py", line 87, in find_element
    raise ElementNotFoundError(kwargs)
pywinauto.findwindows.ElementNotFoundError: {'title': 'name1690963953988603900', 'control_type': 'Text', 'top_level_only': False, 'parent': <uia_element_info.UIAElementInfo - 'Merlot.Aero', Window, 266712>, 'backend': 'uia'}

Process finished with exit code 1

通过检查工具检查,滚动条本身没有属性。有没有办法在数据网格内自动滚动然后单击文本?

希望有人能在这方面帮助我。非常感谢。

预期结果是当项目在当前屏幕中不可见时自动滚动(如果记录位于网格中的最后一行)

python automation pywinauto
1个回答
0
投票

尝试

app.Dialog.dump_tree()
app.window().dump_tree()
打印所有元素的树,例如:

© www.soinside.com 2019 - 2024. All rights reserved.