Forum Discussion

Preetha's avatar
Preetha
Occasional Contributor
6 years ago

Not able to handle dynamic object in desktop application

Not able to handle dynamic objects

Trying to identify objects the in popup. wanted to click on the ok button in the popup.

 

using the below script to find the children of the window... but it is not returning anything.

 

function OpenPatientWn()
{
var GenieObjMain = Sys.Process("Genie Client").Window("C:\\Genie\\Client", "Genie", 1);
GenieObjMain.Keys("^o");
var w = Sys.Process("Genie Client").Window("_ASI_THREED_SAVEBITS_", "Patient: 0 of 483 Records - Current User Preetha", 1);


// Specify the sought-for property names
PropArray = new Array ("WndClass", "Enabled");
// Specify the sought-for property values
ValuesArray = new Array ("Button", true);

// Find all enabled buttons in the Replace dialog
buttons = w.FindAllChildren(PropArray, ValuesArray, 5);


// Log the search results
if (buttons.length > 0)
{
for (var i = 0; i < buttons.length; i++)
{
Log.Message(buttons[i].FullName);
Log.Message("Total number of found enabled buttons: " + buttons.length)
}

}
else
Log.Warning("No enabled buttons were found.");
}

 

  • Based upon your screenshot, note that the ChildCount of the window that you have designated is "zero".  This means that there are no recognized child objects so FindAllChildren won't find anything.  This tells me that a) the window you are highlighting is not, technically, the parent of the buttons you are trying to find or b) that the buttons you are trying to find are contained in some sort of object that is not exposed to TestComplete.

    What happens when you try using Object Spy on the OK button itself, just as an investigation tool to determine where it lands in your hierarchy so you can properly look for it.

     

    Item of note... you are using NameMapping based upon the screenshot (MappedName property is non blank) so some of the first lines of your code can be restructured to use that Alias rather than the name value of Sys.Process.blahblahblah...

     

     

     

     

  • tristaanogre's avatar
    tristaanogre
    Esteemed Contributor

    Based upon your screenshot, note that the ChildCount of the window that you have designated is "zero".  This means that there are no recognized child objects so FindAllChildren won't find anything.  This tells me that a) the window you are highlighting is not, technically, the parent of the buttons you are trying to find or b) that the buttons you are trying to find are contained in some sort of object that is not exposed to TestComplete.

    What happens when you try using Object Spy on the OK button itself, just as an investigation tool to determine where it lands in your hierarchy so you can properly look for it.

     

    Item of note... you are using NameMapping based upon the screenshot (MappedName property is non blank) so some of the first lines of your code can be restructured to use that Alias rather than the name value of Sys.Process.blahblahblah...

     

     

     

     

    • Preetha's avatar
      Preetha
      Occasional Contributor

      The buttons I am trying to find are contained in some sort of object that is not exposed to TestComplete. Hence I am using x y coordinate to perform the click action. didnt find any other way :(

      • tristaanogre's avatar
        tristaanogre
        Esteemed Contributor

        Preetha wrote:

        The buttons I am trying to find are contained in some sort of object that is not exposed to TestComplete. Hence I am using x y coordinate to perform the click action. didnt find any other way :(


        The aplication name you have is listed as "genie client".  IS this a terminal software, serving up aremote application?  That may be the eason for the situation your running into.

         

        Something you can attempt is to use the Text Recognition feature to be able to find the different components based pon their text labels.  That MIGHT work for you.  Research it and see if it helps.