Refresh Name Mapping Cache

Applies to TestComplete 14.10, last modified on June 5, 2019

TestComplete caches mapped objects to speed up testing. When a test uses a mapped object for the first time, TestComplete remembers the matched object. When the mapped object is used next time, TestComplete will use the cached object instead of searching for the object again.

Sometimes, caching may cause issues when identifying objects in dynamic applications. For example, a mapped object may point to an old object even though another object now matches the mapping criteria. If you face this issue, call the TestObj.RefreshMappingInfo method before the problematic test operation. The RefreshMappingInfo method clears the cached object reference and searches for the object again.

We recommend that you use the RefreshMappingInfo method in the following cases:

  • If your application changes during the test run (for example, part of a web page can be updated as a result of an Ajax request),

  • Before checking if an object exists.

Here is an example:

JavaScript, JScript

function Test()
{
  Browsers.Item(btIExplorer).Run("http://www.example.com");

  var pnlSpecialOffers = Aliases.browser.pageExample.pnlSpecialOffers;
  Log.Picture(pnlSpecialOffers);

  // Do something that updates the web page and the pnlSpecialOffers object
  // ...

  // Force a search for the pnlSpecialOffers object
  pnlSpecialOffers.RefreshMappingInfo();
  // You can also force a search for all child mapped objects of pageExample
  // Aliases.browser.pageExample.RefreshMappingInfo();

  if (pnlSpecialOffers.Exists)
    Log.Picture(pnlSpecialOffers);
}

Python

def Test():
   Browsers.Item(btIExplorer).Run("http://www.example.com")

   pnlSpecialOffers = Aliases.browser.pageExample.pnlSpecialOffers
   Log.Picture(pnlSpecialOffers)

   # Do something that updates the web page and the pnlSpecialOffers object
   # ...

   # Force a search for the pnlSpecialOffers object
   pnlSpecialOffers.RefreshMappingInfo()
   # You can also force a search for all child mapped objects of pageExample
   # Aliases.browser.pageExample.RefreshMappingInfo();

   if (pnlSpecialOffers.Exists):
     Log.Picture(pnlSpecialOffers)

VBScript

Sub Test
  Dim pnlSpecialOffers

  Browsers.Item(btIExplorer).Run("http://www.example.com")

  Set pnlSpecialOffers = Aliases.browser.pageExample.pnlSpecialOffers
  Log.Picture pnlSpecialOffers

  ' Do something that updates the web page and the pnlSpecialOffers object
  ' ...

  ' Force a search for the pnlSpecialOffers object
  pnlSpecialOffers.RefreshMappingInfo
  ' You can also force a search for all child mapped objects of pageExample
  ' Aliases.browser.pageExample.RefreshMappingInfo

  If pnlSpecialOffers.Exists Then
    Log.Picture pnlSpecialOffers
  End If
End Sub

DelphiScript

procedure Test;
var
  pnlSpecialOffers;
begin
  Browsers.Item(btIExplorer).Run('http://www.example.com');

  pnlSpecialOffers := Aliases.browser.pageExample.pnlSpecialOffers;
  Log.Picture(pnlSpecialOffers);

  // Do something that updates the web page and the pnlSpecialOffers object
  // ...

  // Force a search for the pnlSpecialOffers object
  pnlSpecialOffers.RefreshMappingInfo;
  // You can also force a search for all child mapped objects of pageExample
  // Aliases.browser.pageExample.RefreshMappingInfo();

  if pnlSpecialOffers.Exists then
    Log.Picture(pnlSpecialOffers);
end;

C++Script, C#Script

function Test()
{
  Browsers["Item"](btIExplorer)["Run"]("http://www.example.com");

  var pnlSpecialOffers = Aliases["browser"]["pageExample"]["pnlSpecialOffers"];
  Log["Picture"](pnlSpecialOffers);

  // Do something that updates the web page and the pnlSpecialOffers object
  // ...

  // Force a search for the pnlSpecialOffers object
  pnlSpecialOffers["RefreshMappingInfo"]();
  // You can also force a search for all child mapped objects of pageExample
  // Aliases["browser"]["pageExample"]["RefreshMappingInfo"]();

  if (pnlSpecialOffers["Exists"])
    Log["Picture"](pnlSpecialOffers);
}

See Also

How To
About Name Mapping

Highlight search results