Search code examples
python-3.xwindowspywinautoinspect

How to get the class name inside a child window using pywinauto?


I am trying to automate an app using pywinauto. Here is a problem when I need to locate a specific window.

For example, I want to get the window 'AfxWnd4214', but I can only access to window "AfxWnd42".

   | AfxWnd42 - ''    (L1044, T410, R1060, B426)
   | ['AfxWnd4214', 'V11.82AfxWnd4212']
   | child_window(class_name="AfxWnd42")

   | AfxWnd42 - ''    (L1044, T410, R1060, B426)
   | ['AfxWnd4212', 'V11.82AfxWnd4212']
   | child_window(class_name="AfxWnd42")

I access it by this code. But it is not specific enough. The sequence of this window may change in the tree.

pywinauto.app.window(class_name = "AfxWnd42", found_index = 0) 

When I try this code:

pywinauto.app.window(class_name = "AfxWnd4214", found_index = 0) 

It says

pywinauto.findwindows.ElementNotFoundError: {'class_name': 'AfxWnd4214', 'found_index': 0, 'backend': 'win32', 'process': 15404}

Is there any better method to access this window?

Thank you.


Solution

  • There are various search criteria see below; Try using combination of these. Once I used auto_id and it worked for me.

    ''' Find elements based on criteria passed in

    Possible values are:
    
    * **class_name**     Elements with this window class
    * **class_name_re**  Elements whose class matches this regular expression
    * **parent**         Elements that are children of this
    * **process**        Elements running in this process
    * **title**          Elements with this text
    * **title_re**       Elements whose text matches this regular expression
    * **top_level_only** Top level elements only (default=True)
    * **visible_only**   Visible elements only (default=True)
    * **enabled_only**   Enabled elements only (default=False)
    * **best_match**     Elements with a title similar to this
    * **handle**         The handle of the element to return
    * **ctrl_index**     The index of the child element to return
    * **found_index**    The index of the filtered out child element to return
    * **predicate_func** A user provided hook for a custom element validation
    * **active_only**    Active elements only (default=False)
    * **control_id**     Elements with this control id
    * **control_type**   Elements with this control type (string; for UIAutomation elements)
    * **auto_id**        Elements with this automation id (for UIAutomation elements)
    * **framework_id**   Elements with this framework id (for UIAutomation elements)
    * **backend**        Back-end name to use while searching (default=None means current active backend)
    

    '''