Forum Discussion

heidi_n's avatar
heidi_n
Regular Contributor
8 years ago

TC 12.20 Isn't Finding My Object in Chrome 57 "Searching for a mapped object took too much time"

TC 12.20 Isn't Finding My Object in Chrome 57 "Searching for a mapped object took too much time"

 

I want to click the "New" button. If I hit F12, the object is named "hyperpick_btnmodify_0-btnInnerE1".

 

 

In TC, it looks like this: textnodeHyperpickBtnmodify0Btnin

 

 

It's failing in TC:

 

 

TC is looking for panelHyperpick0:

 

 

But I need TC to look at hyperpick_btnmodify_0-btnInnerEl instead:

 

 

- Is it possible to do this? If so, how?

- What is "Extended Find Attribute"? What does it do? Would turning it off help?

 

Please note, we are using Keyword tests, as the QA Department does not have programming backgrounds. If we need to add simple code snippets, we can in JavaScript, but the tests are not fully coded. Just recorded.

  • Extended find shows up as a checkbox in your name mapping.... the idea behind it is that, in your web application, you may have an object that renders something like

     

    Sys.Browser.pageXXX.Panel(0).Panel(1).Table(0).Cell(1,2).Panel(0).Button('Save')

     

    Now, of all that hierarchy, perhaps the only things necessary to uniquely identify the object are the first panel and the table.  So,, TestComplete can do the mapping like this:

     

    NameMapping.sys.Browser.Panel0.Table0.buttonSave  

     

    What you would see in your NameMapping is that Table0 and buttonSave would have the "extended find" checkbox checked.  What this tells TC to do, for Table0, is to look through all the children of panel0 and find the first object that matches the criteria for table zero... Then, it looks at all the children of table0 until it finds the first object that matches the criteria for buttonSave.  This clears up some of the "clutter" of all those divs and tables and cells to make your mapping a little more compact.

     

    The draw back to using this is that "finding"... that takes time.  And the more the tree is collapsed, the more child objects that need to be searched (like what if that table had 20 columns to search before it found the right button), the longer it takes.  TestComplete will write out that hint that you see when it seems to be taking an extra long time to find the item you are looking for.  

     

    The solution for that is to insert additional "parent" objects into your tree.

     

    So, from the above example, if it's taking too long, I could do this

     

    NameMapping.NameMapping.sys.Browser.Panel0.Panel1.Table0.buttonSave  

     

    I'd then turn off the "extended find" flag on Table0.  So, TC no longer needs to scan the children of Panel0 to find Table0, effectively speeding up the search.

     

    In your case, while you're trying to click on the button, that "finding" process bogged down on one of the parent objects (in my example, my warning would come up with "took too much time" on my Table0, not on buttonSave).  so... what I would do would be to edit your namemapping and insert a parent object in your tree before panelHyperpick0.

     

    How to do this?

     

    1. Map the parent object you wish to map.  This will place it in your NameMapping, possibly as a child of the page
    2. Drag panelHyperpick0 to be a child of that new object
    3. Depending upon the relationship, you may be able to uncheck the "extended find" box on panelHyperpick0

     

    Your Alias in your test case won't need to change because all you did was change the underlying mapping, not the Aliase used to point to your particular button.

1 Reply

  • tristaanogre's avatar
    tristaanogre
    Esteemed Contributor

    Extended find shows up as a checkbox in your name mapping.... the idea behind it is that, in your web application, you may have an object that renders something like

     

    Sys.Browser.pageXXX.Panel(0).Panel(1).Table(0).Cell(1,2).Panel(0).Button('Save')

     

    Now, of all that hierarchy, perhaps the only things necessary to uniquely identify the object are the first panel and the table.  So,, TestComplete can do the mapping like this:

     

    NameMapping.sys.Browser.Panel0.Table0.buttonSave  

     

    What you would see in your NameMapping is that Table0 and buttonSave would have the "extended find" checkbox checked.  What this tells TC to do, for Table0, is to look through all the children of panel0 and find the first object that matches the criteria for table zero... Then, it looks at all the children of table0 until it finds the first object that matches the criteria for buttonSave.  This clears up some of the "clutter" of all those divs and tables and cells to make your mapping a little more compact.

     

    The draw back to using this is that "finding"... that takes time.  And the more the tree is collapsed, the more child objects that need to be searched (like what if that table had 20 columns to search before it found the right button), the longer it takes.  TestComplete will write out that hint that you see when it seems to be taking an extra long time to find the item you are looking for.  

     

    The solution for that is to insert additional "parent" objects into your tree.

     

    So, from the above example, if it's taking too long, I could do this

     

    NameMapping.NameMapping.sys.Browser.Panel0.Panel1.Table0.buttonSave  

     

    I'd then turn off the "extended find" flag on Table0.  So, TC no longer needs to scan the children of Panel0 to find Table0, effectively speeding up the search.

     

    In your case, while you're trying to click on the button, that "finding" process bogged down on one of the parent objects (in my example, my warning would come up with "took too much time" on my Table0, not on buttonSave).  so... what I would do would be to edit your namemapping and insert a parent object in your tree before panelHyperpick0.

     

    How to do this?

     

    1. Map the parent object you wish to map.  This will place it in your NameMapping, possibly as a child of the page
    2. Drag panelHyperpick0 to be a child of that new object
    3. Depending upon the relationship, you may be able to uncheck the "extended find" box on panelHyperpick0

     

    Your Alias in your test case won't need to change because all you did was change the underlying mapping, not the Aliase used to point to your particular button.