0

When automating a windows application using pywinauto, in certain situation the app becomes unresponsive or crashes and pywinauto can't connect to it anymore. I am using the "uia" backend.

The problem occurs when a data table has many rows (could be over 10 000 rows). The Table's control identifiers for 7-row table are shown below. 10 000 rows would already lead to over 100 000 elements.

This is my code for clicking the first data cell:

window.child_window(control_type="Table").child_window(title="Rivi 0", control_type="Custom").child_window(control_type="DataItem", found_index=0).click_input()

However, any other pywinauto command will also fail after the table with lots of data pops up.

Any tips how to keep using pywinauto and preventing the app to become unresponsive?

Control Identifiers:

Table - 'DataGridView'    (L220, T288, R767, B555)
['Table', 'DataGridView', 'DataGridViewTable']
child_window(title="DataGridView", auto_id="GridView", control_type="Table")
   | 
   | ScrollBar - 'Vaakavierityspalkki'    (L220, T538, R767, B555)
   | ['ScrollBar', 'Vaakavierityspalkki', 'VaakavierityspalkkiScrollBar']
   | child_window(title="Vaakavierityspalkki", auto_id="1116562", control_type="ScrollBar")
   |    | 
   |    | Button - 'Column left'    (L220, T538, R237, B555)
   |    | ['Column leftButton', 'Button', 'Column left', 'Button0', 'Button1']
   |    | child_window(title="Column left", control_type="Button")
   |    | 
   |    | Thumb - 'Position'    (L237, T538, R502, B555)
   |    | ['Position', 'PositionThumb', 'Thumb']
   |    | child_window(title="Position", control_type="Thumb")
   |    | 
   |    | Button - 'Page right'    (L502, T538, R750, B555)
   |    | ['Button2', 'Page rightButton', 'Page right']
   |    | child_window(title="Page right", control_type="Button")
   |    | 
   |    | Button - 'Column right'    (L750, T538, R767, B555)
   |    | ['Button3', 'Column right', 'Column rightButton']
   |    | child_window(title="Column right", control_type="Button")
   | 
   | Custom - 'Ylin rivi'    (L220, T288, R767, B312)
   | ['Custom', 'Ylin rivi', 'Ylin riviCustom', 'Custom0', 'Custom1']
   | child_window(title="Ylin rivi", control_type="Custom")
   |    | 
   |    | Header - 'Vasemman yläreunan otsikkosolu'    (L220, T288, R244, B312)
   |    | ['Header', 'Vasemman yläreunan otsikkosolu', 'Vasemman yläreunan otsikkosoluHeader', 'Header0', 'Header1']
   |    | child_window(title="Vasemman yläreunan otsikkosolu", control_type="Header")
   |    | 
   |    | Header - 'Henk.nro'    (L244, T288, R294, B312)
   |    | ['Header2', 'Henk.nroHeader', 'Henk.nro']
   |    | child_window(title="Henk.nro", control_type="Header")
   |    | 
   |    | Header - 'Käyttönimi'    (L294, T288, R450, B312)
   |    | ['KäyttönimiHeader', 'Header3', 'Käyttönimi']
   |    | child_window(title="Käyttönimi", control_type="Header")
   |    | 
   |    | Header - 'Alkupäivä'    (L450, T288, R530, B312)
   |    | ['AlkupäiväHeader', 'Alkupäivä', 'Header4']
   |    | child_window(title="Alkupäivä", control_type="Header")
   |    | 
   |    | Header - 'Loppupäivä'    (L530, T288, R610, B312)
   |    | ['LoppupäiväHeader', 'Header5', 'Loppupäivä']
   |    | child_window(title="Loppupäivä", control_type="Header")
   |    | 
   |    | Header - 'Pidätys-% 1'    (L610, T288, R660, B312)
   |    | ['Pidätys-% 1', 'Header6', 'Pidätys-% 1Header']
   |    | child_window(title="Pidätys-% 1", control_type="Header")
   |    | 
   |    | Header - 'Pidätys-% 2'    (L660, T288, R710, B312)
   |    | ['Pidätys-% 2Header', 'Pidätys-% 2', 'Header7']
   |    | child_window(title="Pidätys-% 2", control_type="Header")
   |    | 
   |    | Header - 'Tuloraja 1'    (L710, T288, R763, B312)
   |    | ['Tuloraja 1', 'Header8', 'Tuloraja 1Header']
   |    | child_window(title="Tuloraja 1", control_type="Header")
   |    | 
   |    | Header - 'Maksaja'    (L763, T288, R931, B312)
   |    | ['Maksaja', 'Header9', 'MaksajaHeader']
   |    | child_window(title="Maksaja", control_type="Header")
   |    | 
   |    | Header - 'Ryhmä'    (L0, T0, R0, B0)
   |    | ['Ryhmä', 'Header10', 'RyhmäHeader']
   |    | child_window(title="Ryhmä", control_type="Header")
   |    | 
   |    | Header - 'Muuttaja'    (L0, T0, R0, B0)
   |    | ['MuuttajaHeader', 'Header11', 'Muuttaja']
   |    | child_window(title="Muuttaja", control_type="Header")
   |    | 
   |    | Header - 'Muutettu'    (L0, T0, R0, B0)
   |    | ['Header12', 'MuutettuHeader', 'Muutettu']
   |    | child_window(title="Muutettu", control_type="Header")
   | 
   | Custom - 'Rivi 0'    (L220, T312, R767, B334)
   | ['Custom2', 'Rivi 0Custom', 'Rivi 0', 'Rivi 00', 'Rivi 01']
   | child_window(title="Rivi 0", control_type="Custom")
   |    | 
   |    | Header - 'Rivi 0'    (L220, T312, R244, B334)
   |    | ['Rivi 02', 'Header13', 'Rivi 0Header']
   |    | child_window(title="Rivi 0", control_type="Header")
   |    | 
   |    | DataItem - 'Henk.nro Rivi 0'    (L244, T312, R294, B334)
   |    | ['Henk.nro Rivi 0DataItem', 'Henk.nro Rivi 0', 'DataItem', 'DataItem0', 'DataItem1']
   |    | child_window(title="Henk.nro Rivi 0", control_type="DataItem")
   |    | 
   |    | DataItem - 'Käyttönimi Rivi 0'    (L294, T312, R450, B334)
   |    | ['Käyttönimi Rivi 0', 'Käyttönimi Rivi 0DataItem', 'DataItem2']
   |    | child_window(title="Käyttönimi Rivi 0", control_type="DataItem")
   |    | 
   |    | DataItem - 'Alkupäivä Rivi 0'    (L450, T312, R530, B334)
   |    | ['Alkupäivä Rivi 0DataItem', 'Alkupäivä Rivi 0', 'DataItem3']
   |    | child_window(title="Alkupäivä Rivi 0", control_type="DataItem")
   |    | 
   |    | DataItem - 'Loppupäivä Rivi 0'    (L530, T312, R610, B334)
   |    | ['Loppupäivä Rivi 0', 'Loppupäivä Rivi 0DataItem', 'DataItem4']
   |    | child_window(title="Loppupäivä Rivi 0", control_type="DataItem")
   |    | 
   |    | DataItem - 'Pidätys-% 1 Rivi 0'    (L610, T312, R660, B334)
   |    | ['Pidätys-% 1 Rivi 0DataItem', 'Pidätys-% 1 Rivi 0', 'DataItem5']
   |    | child_window(title="Pidätys-% 1 Rivi 0", control_type="DataItem")
   |    | 
   |    | DataItem - 'Pidätys-% 2 Rivi 0'    (L660, T312, R710, B334)
   |    | ['Pidätys-% 2 Rivi 0DataItem', 'Pidätys-% 2 Rivi 0', 'DataItem6']
   |    | child_window(title="Pidätys-% 2 Rivi 0", control_type="DataItem")
   |    | 
   |    | DataItem - 'Tuloraja 1 Rivi 0'    (L710, T312, R763, B334)
   |    | ['Tuloraja 1 Rivi 0', 'Tuloraja 1 Rivi 0DataItem', 'DataItem7']
   |    | child_window(title="Tuloraja 1 Rivi 0", control_type="DataItem")
   |    | 
   |    | DataItem - 'Maksaja Rivi 0'    (L763, T312, R931, B334)
   |    | ['Maksaja Rivi 0DataItem', 'Maksaja Rivi 0', 'DataItem8']
   |    | child_window(title="Maksaja Rivi 0", control_type="DataItem")
   |    | 
   |    | DataItem - 'Ryhmä Rivi 0'    (L0, T0, R0, B0)
   |    | ['Ryhmä Rivi 0', 'Ryhmä Rivi 0DataItem', 'DataItem9']
   |    | child_window(title="Ryhmä Rivi 0", control_type="DataItem")
   |    | 
   |    | DataItem - 'Muuttaja Rivi 0'    (L0, T0, R0, B0)
   |    | ['Muuttaja Rivi 0DataItem', 'Muuttaja Rivi 0', 'DataItem10']
   |    | child_window(title="Muuttaja Rivi 0", control_type="DataItem")
   |    | 
   |    | DataItem - 'Muutettu Rivi 0'    (L0, T0, R0, B0)
   |    | ['Muutettu Rivi 0DataItem', 'DataItem11', 'Muutettu Rivi 0']
   |    | child_window(title="Muutettu Rivi 0", control_type="DataItem")
   | 
   | Custom - 'Rivi 1'    (L220, T334, R767, B356)
   | ['Rivi 1', 'Custom3', 'Rivi 1Custom', 'Rivi 10', 'Rivi 11']
   | child_window(title="Rivi 1", control_type="Custom")
   |    | 
   |    | Header - 'Rivi 1'    (L220, T334, R244, B356)
   |    | ['Rivi 12', 'Header14', 'Rivi 1Header']
   |    | child_window(title="Rivi 1", control_type="Header")
   |    | 
   |    | DataItem - 'Henk.nro Rivi 1'    (L244, T334, R294, B356)
   |    | ['Henk.nro Rivi 1', 'Henk.nro Rivi 1DataItem', 'DataItem12']
   |    | child_window(title="Henk.nro Rivi 1", control_type="DataItem")
   |    | 
   |    | DataItem - 'Käyttönimi Rivi 1'    (L294, T334, R450, B356)
   |    | ['Käyttönimi Rivi 1DataItem', 'Käyttönimi Rivi 1', 'DataItem13']
   |    | child_window(title="Käyttönimi Rivi 1", control_type="DataItem")
   |    | 
   |    | DataItem - 'Alkupäivä Rivi 1'    (L450, T334, R530, B356)
   |    | ['Alkupäivä Rivi 1', 'Alkupäivä Rivi 1DataItem', 'DataItem14']
   |    | child_window(title="Alkupäivä Rivi 1", control_type="DataItem")
   |    | 
   |    | DataItem - 'Loppupäivä Rivi 1'    (L530, T334, R610, B356)
   |    | ['Loppupäivä Rivi 1', 'Loppupäivä Rivi 1DataItem', 'DataItem15']
   |    | child_window(title="Loppupäivä Rivi 1", control_type="DataItem")
   |    | 
   |    | DataItem - 'Pidätys-% 1 Rivi 1'    (L610, T334, R660, B356)
   |    | ['Pidätys-% 1 Rivi 1', 'Pidätys-% 1 Rivi 1DataItem', 'DataItem16']
   |    | child_window(title="Pidätys-% 1 Rivi 1", control_type="DataItem")
   |    | 
   |    | DataItem - 'Pidätys-% 2 Rivi 1'    (L660, T334, R710, B356)
   |    | ['Pidätys-% 2 Rivi 1', 'Pidätys-% 2 Rivi 1DataItem', 'DataItem17']
   |    | child_window(title="Pidätys-% 2 Rivi 1", control_type="DataItem")
   |    | 
   |    | DataItem - 'Tuloraja 1 Rivi 1'    (L710, T334, R763, B356)
   |    | ['Tuloraja 1 Rivi 1', 'Tuloraja 1 Rivi 1DataItem', 'DataItem18']
   |    | child_window(title="Tuloraja 1 Rivi 1", control_type="DataItem")
   |    | 
   |    | DataItem - 'Maksaja Rivi 1'    (L763, T334, R931, B356)
   |    | ['Maksaja Rivi 1DataItem', 'Maksaja Rivi 1', 'DataItem19']
   |    | child_window(title="Maksaja Rivi 1", control_type="DataItem")
   |    | 
   |    | DataItem - 'Ryhmä Rivi 1'    (L0, T0, R0, B0)
   |    | ['DataItem20', 'Ryhmä Rivi 1', 'Ryhmä Rivi 1DataItem']
   |    | child_window(title="Ryhmä Rivi 1", control_type="DataItem")
   |    | 
   |    | DataItem - 'Muuttaja Rivi 1'    (L0, T0, R0, B0)
   |    | ['Muuttaja Rivi 1', 'DataItem21', 'Muuttaja Rivi 1DataItem']
   |    | child_window(title="Muuttaja Rivi 1", control_type="DataItem")
   |    | 
   |    | DataItem - 'Muutettu Rivi 1'    (L0, T0, R0, B0)
   |    | ['Muutettu Rivi 1', 'Muutettu Rivi 1DataItem', 'DataItem22']
   |    | child_window(title="Muutettu Rivi 1", control_type="DataItem")
   | 
   | Custom - 'Rivi 2'    (L220, T356, R767, B378)
   | ['Custom4', 'Rivi 2Custom', 'Rivi 2', 'Rivi 20', 'Rivi 21']
   | child_window(title="Rivi 2", control_type="Custom")
   |    | 
   |    | Header - 'Rivi 2'    (L220, T356, R244, B378)
   |    | ['Rivi 2Header', 'Header15', 'Rivi 22']
   |    | child_window(title="Rivi 2", control_type="Header")
   |    | 
   |    | DataItem - 'Henk.nro Rivi 2'    (L244, T356, R294, B378)
   |    | ['Henk.nro Rivi 2', 'Henk.nro Rivi 2DataItem', 'DataItem23']
   |    | child_window(title="Henk.nro Rivi 2", control_type="DataItem")
   |    | 
   |    | DataItem - 'Käyttönimi Rivi 2'    (L294, T356, R450, B378)
   |    | ['Käyttönimi Rivi 2DataItem', 'Käyttönimi Rivi 2', 'DataItem24']
   |    | child_window(title="Käyttönimi Rivi 2", control_type="DataItem")
   |    | 
   |    | DataItem - 'Alkupäivä Rivi 2'    (L450, T356, R530, B378)
   |    | ['Alkupäivä Rivi 2', 'Alkupäivä Rivi 2DataItem', 'DataItem25']
   |    | child_window(title="Alkupäivä Rivi 2", control_type="DataItem")
   |    | 
   |    | DataItem - 'Loppupäivä Rivi 2'    (L530, T356, R610, B378)
   |    | ['Loppupäivä Rivi 2DataItem', 'Loppupäivä Rivi 2', 'DataItem26']
   |    | child_window(title="Loppupäivä Rivi 2", control_type="DataItem")
   |    | 
   |    | DataItem - 'Pidätys-% 1 Rivi 2'    (L610, T356, R660, B378)
   |    | ['Pidätys-% 1 Rivi 2DataItem', 'Pidätys-% 1 Rivi 2', 'DataItem27']
   |    | child_window(title="Pidätys-% 1 Rivi 2", control_type="DataItem")
   |    | 
   |    | DataItem - 'Pidätys-% 2 Rivi 2'    (L660, T356, R710, B378)
   |    | ['Pidätys-% 2 Rivi 2', 'Pidätys-% 2 Rivi 2DataItem', 'DataItem28']
   |    | child_window(title="Pidätys-% 2 Rivi 2", control_type="DataItem")
   |    | 
   |    | DataItem - 'Tuloraja 1 Rivi 2'    (L710, T356, R763, B378)
   |    | ['Tuloraja 1 Rivi 2DataItem', 'Tuloraja 1 Rivi 2', 'DataItem29']
   |    | child_window(title="Tuloraja 1 Rivi 2", control_type="DataItem")
   |    | 
   |    | DataItem - 'Maksaja Rivi 2'    (L763, T356, R931, B378)
   |    | ['Maksaja Rivi 2DataItem', 'Maksaja Rivi 2', 'DataItem30']
   |    | child_window(title="Maksaja Rivi 2", control_type="DataItem")
   |    | 
   |    | DataItem - 'Ryhmä Rivi 2'    (L0, T0, R0, B0)
   |    | ['Ryhmä Rivi 2', 'DataItem31', 'Ryhmä Rivi 2DataItem']
   |    | child_window(title="Ryhmä Rivi 2", control_type="DataItem")
   |    | 
   |    | DataItem - 'Muuttaja Rivi 2'    (L0, T0, R0, B0)
   |    | ['Muuttaja Rivi 2DataItem', 'DataItem32', 'Muuttaja Rivi 2']
   |    | child_window(title="Muuttaja Rivi 2", control_type="DataItem")
   |    | 
   |    | DataItem - 'Muutettu Rivi 2'    (L0, T0, R0, B0)
   |    | ['Muutettu Rivi 2DataItem', 'DataItem33', 'Muutettu Rivi 2']
   |    | child_window(title="Muutettu Rivi 2", control_type="DataItem")
   | 
   | Custom - 'Rivi 3'    (L220, T378, R767, B400)
   | ['Rivi 3Custom', 'Custom5', 'Rivi 3', 'Rivi 30', 'Rivi 31']
   | child_window(title="Rivi 3", control_type="Custom")
   |    | 
   |    | Header - 'Rivi 3'    (L220, T378, R244, B400)
   |    | ['Rivi 3Header', 'Header16', 'Rivi 32']
   |    | child_window(title="Rivi 3", control_type="Header")
   |    | 
   |    | DataItem - 'Henk.nro Rivi 3'    (L244, T378, R294, B400)
   |    | ['Henk.nro Rivi 3', 'Henk.nro Rivi 3DataItem', 'DataItem34']
   |    | child_window(title="Henk.nro Rivi 3", control_type="DataItem")
   |    | 
   |    | DataItem - 'Käyttönimi Rivi 3'    (L294, T378, R450, B400)
   |    | ['Käyttönimi Rivi 3DataItem', 'Käyttönimi Rivi 3', 'DataItem35']
   |    | child_window(title="Käyttönimi Rivi 3", control_type="DataItem")
   |    | 
   |    | DataItem - 'Alkupäivä Rivi 3'    (L450, T378, R530, B400)
   |    | ['Alkupäivä Rivi 3', 'Alkupäivä Rivi 3DataItem', 'DataItem36']
   |    | child_window(title="Alkupäivä Rivi 3", control_type="DataItem")
   |    | 
   |    | DataItem - 'Loppupäivä Rivi 3'    (L530, T378, R610, B400)
   |    | ['Loppupäivä Rivi 3DataItem', 'Loppupäivä Rivi 3', 'DataItem37']
   |    | child_window(title="Loppupäivä Rivi 3", control_type="DataItem")
   |    | 
   |    | DataItem - 'Pidätys-% 1 Rivi 3'    (L610, T378, R660, B400)
   |    | ['Pidätys-% 1 Rivi 3', 'Pidätys-% 1 Rivi 3DataItem', 'DataItem38']
   |    | child_window(title="Pidätys-% 1 Rivi 3", control_type="DataItem")
   |    | 
   |    | DataItem - 'Pidätys-% 2 Rivi 3'    (L660, T378, R710, B400)
   |    | ['Pidätys-% 2 Rivi 3', 'Pidätys-% 2 Rivi 3DataItem', 'DataItem39']
   |    | child_window(title="Pidätys-% 2 Rivi 3", control_type="DataItem")
   |    | 
   |    | DataItem - 'Tuloraja 1 Rivi 3'    (L710, T378, R763, B400)
   |    | ['Tuloraja 1 Rivi 3DataItem', 'Tuloraja 1 Rivi 3', 'DataItem40']
   |    | child_window(title="Tuloraja 1 Rivi 3", control_type="DataItem")
   |    | 
   |    | DataItem - 'Maksaja Rivi 3'    (L763, T378, R931, B400)
   |    | ['Maksaja Rivi 3DataItem', 'Maksaja Rivi 3', 'DataItem41']
   |    | child_window(title="Maksaja Rivi 3", control_type="DataItem")
   |    | 
   |    | DataItem - 'Ryhmä Rivi 3'    (L0, T0, R0, B0)
   |    | ['Ryhmä Rivi 3', 'DataItem42', 'Ryhmä Rivi 3DataItem']
   |    | child_window(title="Ryhmä Rivi 3", control_type="DataItem")
   |    | 
   |    | DataItem - 'Muuttaja Rivi 3'    (L0, T0, R0, B0)
   |    | ['Muuttaja Rivi 3', 'Muuttaja Rivi 3DataItem', 'DataItem43']
   |    | child_window(title="Muuttaja Rivi 3", control_type="DataItem")
   |    | 
   |    | DataItem - 'Muutettu Rivi 3'    (L0, T0, R0, B0)
   |    | ['Muutettu Rivi 3DataItem', 'DataItem44', 'Muutettu Rivi 3']
   |    | child_window(title="Muutettu Rivi 3", control_type="DataItem")
   | 
   | Custom - 'Rivi 4'    (L220, T400, R767, B422)
   | ['Custom6', 'Rivi 4', 'Rivi 4Custom', 'Rivi 40', 'Rivi 41']
   | child_window(title="Rivi 4", control_type="Custom")
   |    | 
   |    | Header - 'Rivi 4'    (L220, T400, R244, B422)
   |    | ['Header17', 'Rivi 4Header', 'Rivi 42']
   |    | child_window(title="Rivi 4", control_type="Header")
   |    | 
   |    | DataItem - 'Henk.nro Rivi 4'    (L244, T400, R294, B422)
   |    | ['Henk.nro Rivi 4', 'Henk.nro Rivi 4DataItem', 'DataItem45']
   |    | child_window(title="Henk.nro Rivi 4", control_type="DataItem")
   |    | 
   |    | DataItem - 'Käyttönimi Rivi 4'    (L294, T400, R450, B422)
   |    | ['DataItem46', 'Käyttönimi Rivi 4DataItem', 'Käyttönimi Rivi 4']
   |    | child_window(title="Käyttönimi Rivi 4", control_type="DataItem")
   |    | 
   |    | DataItem - 'Alkupäivä Rivi 4'    (L450, T400, R530, B422)
   |    | ['Alkupäivä Rivi 4DataItem', 'Alkupäivä Rivi 4', 'DataItem47']
   |    | child_window(title="Alkupäivä Rivi 4", control_type="DataItem")
   |    | 
   |    | DataItem - 'Loppupäivä Rivi 4'    (L530, T400, R610, B422)
   |    | ['Loppupäivä Rivi 4', 'Loppupäivä Rivi 4DataItem', 'DataItem48']
   |    | child_window(title="Loppupäivä Rivi 4", control_type="DataItem")
   |    | 
   |    | DataItem - 'Pidätys-% 1 Rivi 4'    (L610, T400, R660, B422)
   |    | ['Pidätys-% 1 Rivi 4', 'Pidätys-% 1 Rivi 4DataItem', 'DataItem49']
   |    | child_window(title="Pidätys-% 1 Rivi 4", control_type="DataItem")
   |    | 
   |    | DataItem - 'Pidätys-% 2 Rivi 4'    (L660, T400, R710, B422)
   |    | ['Pidätys-% 2 Rivi 4', 'Pidätys-% 2 Rivi 4DataItem', 'DataItem50']
   |    | child_window(title="Pidätys-% 2 Rivi 4", control_type="DataItem")
   |    | 
   |    | DataItem - 'Tuloraja 1 Rivi 4'    (L710, T400, R763, B422)
   |    | ['Tuloraja 1 Rivi 4', 'Tuloraja 1 Rivi 4DataItem', 'DataItem51']
   |    | child_window(title="Tuloraja 1 Rivi 4", control_type="DataItem")
   |    | 
   |    | DataItem - 'Maksaja Rivi 4'    (L763, T400, R931, B422)
   |    | ['Maksaja Rivi 4DataItem', 'Maksaja Rivi 4', 'DataItem52']
   |    | child_window(title="Maksaja Rivi 4", control_type="DataItem")
   |    | 
   |    | DataItem - 'Ryhmä Rivi 4'    (L0, T0, R0, B0)
   |    | ['DataItem53', 'Ryhmä Rivi 4', 'Ryhmä Rivi 4DataItem']
   |    | child_window(title="Ryhmä Rivi 4", control_type="DataItem")
   |    | 
   |    | DataItem - 'Muuttaja Rivi 4'    (L0, T0, R0, B0)
   |    | ['Muuttaja Rivi 4', 'Muuttaja Rivi 4DataItem', 'DataItem54']
   |    | child_window(title="Muuttaja Rivi 4", control_type="DataItem")
   |    | 
   |    | DataItem - 'Muutettu Rivi 4'    (L0, T0, R0, B0)
   |    | ['Muutettu Rivi 4', 'Muutettu Rivi 4DataItem', 'DataItem55']
   |    | child_window(title="Muutettu Rivi 4", control_type="DataItem")
   | 
   | Custom - 'Rivi 5'    (L220, T422, R767, B444)
   | ['Rivi 5', 'Custom7', 'Rivi 5Custom', 'Rivi 50', 'Rivi 51']
   | child_window(title="Rivi 5", control_type="Custom")
   |    | 
   |    | Header - 'Rivi 5'    (L220, T422, R244, B444)
   |    | ['Rivi 52', 'Header18', 'Rivi 5Header']
   |    | child_window(title="Rivi 5", control_type="Header")
   |    | 
   |    | DataItem - 'Henk.nro Rivi 5'    (L244, T422, R294, B444)
   |    | ['Henk.nro Rivi 5', 'Henk.nro Rivi 5DataItem', 'DataItem56']
   |    | child_window(title="Henk.nro Rivi 5", control_type="DataItem")
   |    | 
   |    | DataItem - 'Käyttönimi Rivi 5'    (L294, T422, R450, B444)
   |    | ['Käyttönimi Rivi 5DataItem', 'Käyttönimi Rivi 5', 'DataItem57']
   |    | child_window(title="Käyttönimi Rivi 5", control_type="DataItem")
   |    | 
   |    | DataItem - 'Alkupäivä Rivi 5'    (L450, T422, R530, B444)
   |    | ['Alkupäivä Rivi 5DataItem', 'DataItem58', 'Alkupäivä Rivi 5']
   |    | child_window(title="Alkupäivä Rivi 5", control_type="DataItem")
   |    | 
   |    | DataItem - 'Loppupäivä Rivi 5'    (L530, T422, R610, B444)
   |    | ['Loppupäivä Rivi 5', 'Loppupäivä Rivi 5DataItem', 'DataItem59']
   |    | child_window(title="Loppupäivä Rivi 5", control_type="DataItem")
   |    | 
   |    | DataItem - 'Pidätys-% 1 Rivi 5'    (L610, T422, R660, B444)
   |    | ['Pidätys-% 1 Rivi 5', 'Pidätys-% 1 Rivi 5DataItem', 'DataItem60']
   |    | child_window(title="Pidätys-% 1 Rivi 5", control_type="DataItem")
   |    | 
   |    | DataItem - 'Pidätys-% 2 Rivi 5'    (L660, T422, R710, B444)
   |    | ['Pidätys-% 2 Rivi 5DataItem', 'Pidätys-% 2 Rivi 5', 'DataItem61']
   |    | child_window(title="Pidätys-% 2 Rivi 5", control_type="DataItem")
   |    | 
   |    | DataItem - 'Tuloraja 1 Rivi 5'    (L710, T422, R763, B444)
   |    | ['Tuloraja 1 Rivi 5', 'DataItem62', 'Tuloraja 1 Rivi 5DataItem']
   |    | child_window(title="Tuloraja 1 Rivi 5", control_type="DataItem")
   |    | 
   |    | DataItem - 'Maksaja Rivi 5'    (L763, T422, R931, B444)
   |    | ['DataItem63', 'Maksaja Rivi 5DataItem', 'Maksaja Rivi 5']
   |    | child_window(title="Maksaja Rivi 5", control_type="DataItem")
   |    | 
   |    | DataItem - 'Ryhmä Rivi 5'    (L0, T0, R0, B0)
   |    | ['Ryhmä Rivi 5', 'Ryhmä Rivi 5DataItem', 'DataItem64']
   |    | child_window(title="Ryhmä Rivi 5", control_type="DataItem")
   |    | 
   |    | DataItem - 'Muuttaja Rivi 5'    (L0, T0, R0, B0)
   |    | ['Muuttaja Rivi 5', 'Muuttaja Rivi 5DataItem', 'DataItem65']
   |    | child_window(title="Muuttaja Rivi 5", control_type="DataItem")
   |    | 
   |    | DataItem - 'Muutettu Rivi 5'    (L0, T0, R0, B0)
   |    | ['Muutettu Rivi 5DataItem', 'Muutettu Rivi 5', 'DataItem66']
   |    | child_window(title="Muutettu Rivi 5", control_type="DataItem")
   | 
   | Custom - 'Rivi 6'    (L220, T444, R767, B466)
   | ['Rivi 6', 'Custom8', 'Rivi 6Custom', 'Rivi 60', 'Rivi 61']
   | child_window(title="Rivi 6", control_type="Custom")
   |    | 
   |    | Header - 'Rivi 6'    (L220, T444, R244, B466)
   |    | ['Rivi 62', 'Header19', 'Rivi 6Header']
   |    | child_window(title="Rivi 6", control_type="Header")
   |    | 
   |    | DataItem - 'Henk.nro Rivi 6'    (L244, T444, R294, B466)
   |    | ['Henk.nro Rivi 6', 'Henk.nro Rivi 6DataItem', 'DataItem67']
   |    | child_window(title="Henk.nro Rivi 6", control_type="DataItem")
   |    | 
   |    | DataItem - 'Käyttönimi Rivi 6'    (L294, T444, R450, B466)
   |    | ['Käyttönimi Rivi 6', 'Käyttönimi Rivi 6DataItem', 'DataItem68']
   |    | child_window(title="Käyttönimi Rivi 6", control_type="DataItem")
   |    | 
   |    | DataItem - 'Alkupäivä Rivi 6'    (L450, T444, R530, B466)
   |    | ['Alkupäivä Rivi 6DataItem', 'Alkupäivä Rivi 6', 'DataItem69']
   |    | child_window(title="Alkupäivä Rivi 6", control_type="DataItem")
   |    | 
   |    | DataItem - 'Loppupäivä Rivi 6'    (L530, T444, R610, B466)
   |    | ['Loppupäivä Rivi 6', 'DataItem70', 'Loppupäivä Rivi 6DataItem']
   |    | child_window(title="Loppupäivä Rivi 6", control_type="DataItem")
   |    | 
   |    | DataItem - 'Pidätys-% 1 Rivi 6'    (L610, T444, R660, B466)
   |    | ['DataItem71', 'Pidätys-% 1 Rivi 6', 'Pidätys-% 1 Rivi 6DataItem']
   |    | child_window(title="Pidätys-% 1 Rivi 6", control_type="DataItem")
   |    | 
   |    | DataItem - 'Pidätys-% 2 Rivi 6'    (L660, T444, R710, B466)
   |    | ['Pidätys-% 2 Rivi 6DataItem', 'Pidätys-% 2 Rivi 6', 'DataItem72']
   |    | child_window(title="Pidätys-% 2 Rivi 6", control_type="DataItem")
   |    | 
   |    | DataItem - 'Tuloraja 1 Rivi 6'    (L710, T444, R763, B466)
   |    | ['Tuloraja 1 Rivi 6DataItem', 'DataItem73', 'Tuloraja 1 Rivi 6']
   |    | child_window(title="Tuloraja 1 Rivi 6", control_type="DataItem")
   |    | 
   |    | DataItem - 'Maksaja Rivi 6'    (L763, T444, R931, B466)
   |    | ['Maksaja Rivi 6DataItem', 'Maksaja Rivi 6', 'DataItem74']
   |    | child_window(title="Maksaja Rivi 6", control_type="DataItem")
   |    | 
   |    | DataItem - 'Ryhmä Rivi 6'    (L0, T0, R0, B0)
   |    | ['Ryhmä Rivi 6DataItem', 'Ryhmä Rivi 6', 'DataItem75']
   |    | child_window(title="Ryhmä Rivi 6", control_type="DataItem")
   |    | 
   |    | DataItem - 'Muuttaja Rivi 6'    (L0, T0, R0, B0)
   |    | ['Muuttaja Rivi 6', 'Muuttaja Rivi 6DataItem', 'DataItem76']
   |    | child_window(title="Muuttaja Rivi 6", control_type="DataItem")
   |    | 
   |    | DataItem - 'Muutettu Rivi 6'    (L0, T0, R0, B0)
   |    | ['Muutettu Rivi 6DataItem', 'Muutettu Rivi 6', 'DataItem77']
   |    | child_window(title="Muutettu Rivi 6", control_type="DataItem")
juhat
  • 342
  • 2
  • 10

1 Answers1

0
  1. By looking at dump_tree it seems you are using win32 backend, in either case try switching for the backend. There is not concrete way of identifying which backend will work except trying out both and figure out which works for you. Pywinauto getting started will be of some help to you to identify backend.

  2. To access the application of 32bit you should consider to use 32 bit python installation. refer this answer - https://stackoverflow.com/a/34115067/5400362.

  3. Consider to run the application in elevated permission i.e. using administrator mode command prompt.

  4. If all this options are not solving your issue, try using some waits before performing any actions and check for ready state while waiting. For example -

    window.child_window(control_type="Table").wait('ready', 5, 1).child_window(title="Rivi 0", control_type="Custom").wait('ready', 3, 1).child_window(control_type="DataItem", found_index=0).wait('ready', 3, 1).click_input()
    
Dev
  • 2,739
  • 2
  • 21
  • 34
  • Thanks for your suggestions. Unfortunately, they didn't solve the problem. I am using "uia" backend, running as admin is not an option and when applying the waits, the program still freezes and pywinauto raises TimeoutError – juhat Jul 11 '22 at 08:02