How to refresh child objects during test run (in desktop testing)?
There is a desktop window, which has more tabs, and some tabs include a text editor. I wrote a test which checks the functions of the text editor in the following way:
lprops := ['FullName','WndClass']; lvals := ['*Toolbar', 'TWPToolPanel']; ltarget := Aliases.(Application Name).Find(lprops,lvals,20,true); ltarget.button.Click;
I chose this way, because more elements in the object tree are cached and their mapping name is always changing. It properly works on any single tab of the window. Although, when I try to run the editor check more times in one test, the test fails after changing tab, because it searches the button on the previous tab. I tried Refresh and RefreshMappingInfo methods on the common parent object of the tabs, but they doesn't help. (The names and number of tabs can change in the window depending on the conditions.)
Is there any way to clear cached mapping tree during test run?
Thank you in advance for any suggestion!
Hi,
Are tabs that are not active and their controls disposed of or continue to exist?
If they continue to exist then nothing in your code prevents TestComplete from finding a control on the inactive tab.
Possible solution:
a) Change object addressing to search not from application, but from the tab root. E.g.
ltarget := Aliases.(Application Name).tab1.Find(lprops,lvals,20,true);
b) Add some other criterion (e.g. VisibleOnScreen) to the search conditions to prevent TestComplete from matching invisible controls.
Does this help?