Forum Discussion

sonya_m's avatar
sonya_m
SmartBear Alumni (Retired)
5 years ago

[TechCorner Challenge #3] - Changing the options from outside of TestComplete

Hi TestComplete Community! I bring you another task for our weekly scripting challengeπŸ™‚

Learn new things about working with the product, and get into the TechCorner Leaderboard!

 

Imagine that you need to change the TestComplete options on several machines - for example, set the JVM location. You don’t want to do it manually and decide to create a script and run it on each machine. How could this script look?
We suggest using JScript or VBScript, but you choose PowerShell, Python, etc.

 

Task: Create a script that changes TestComplete options from outside of TestComplete

Difficulty

 

It is a bit more difficult than the tasks we posted here before, let's see how quickly you can solve his one!πŸ™‚

 

Upd: More hints!

 

Follow these steps to solve this:

 

1. You need to modify the XML file that contains the TestComplete settings - tcSettings.xml. The file is located in
%LOCALAPPDATA%/SmartBear/TestComplete/14.0. You can use the ExpandEnvironmentStrings method of the WScript.Shell object to obtain the %LOCALAPPDATA% environment variable value.

 

2. Open the XML file and locate the node that should contain the option value.
You can use the selectNodes or selectSingleNode methods of the DOMDocument object to get the needed node.

 

3. Set the needed value for the node attribute.

 

4. Save the XML file.

  • Task: Create a script that changes TestComplete options from outside of TestComplete

     

    This is a solution created for [TechCorner Challenge #3]

     

    Hi All,

    I always try to find some time for coding. Recently, I've started learning VBA to create macros in Excel πŸ˜Ž 

     

    So, here is a sample of how to read TestComplete settings from a setting file. However, I would like to mention that the structure of the setting file isn't documented and, thus, it can be changed from version to version. It's always better to use TestComplete/TestExecute UI to change settings.

     

    Anyway, here is a VBScript code. Please feel free to post your comments.

     

     

     

    Sub readTCsettings
    
      Dim Doc, localappdata, path, jvmSetting, newJvmPath
       
      'get a path to local settings
      localappdata = WshShell.ExpandEnvironmentStrings("%LOCALAPPDATA%")
      
      'get an object to work with XML
      Set Doc = Sys.OleObject("Msxml2.DOMDocument.6.0")
      
      'make sure that we can read a hidden file
      Call Doc.setProperty("ProhibitDTD", false)
      
      Doc.async = false
      path = localappdata + "\SmartBear\TestComplete\14.0\tcSettings.xml"
      
      'load the xml settings file
      Doc.load(path)
      
      'get the node with settings
      Set jvmSetting = Doc.selectNodes("//Node[@name='{2e030b0e-f461-47e8-980a-56851ef43cff}']/Node[@name='{291fd292-a44f-4b82-9232-e8899ca6c851}']/Prp[@name='value']")
      
      if jvmSetting.length = 0 Then
        Log.Message ("JVM setting wasn't found")
      
      Else
        'log the value of the setting
        Log.Message ("Current JVM settings: " & jvmSetting(0).getAttribute("value"))
      
      End If
      
    End Sub
    

     

     

  • TanyaYatskovska's avatar
    TanyaYatskovska
    SmartBear Alumni (Retired)

    Task: Create a script that changes TestComplete options from outside of TestComplete

     

    This is a solution created for [TechCorner Challenge #3]

     

    Hi All,

    I always try to find some time for coding. Recently, I've started learning VBA to create macros in Excel πŸ˜Ž 

     

    So, here is a sample of how to read TestComplete settings from a setting file. However, I would like to mention that the structure of the setting file isn't documented and, thus, it can be changed from version to version. It's always better to use TestComplete/TestExecute UI to change settings.

     

    Anyway, here is a VBScript code. Please feel free to post your comments.

     

     

     

    Sub readTCsettings
    
      Dim Doc, localappdata, path, jvmSetting, newJvmPath
       
      'get a path to local settings
      localappdata = WshShell.ExpandEnvironmentStrings("%LOCALAPPDATA%")
      
      'get an object to work with XML
      Set Doc = Sys.OleObject("Msxml2.DOMDocument.6.0")
      
      'make sure that we can read a hidden file
      Call Doc.setProperty("ProhibitDTD", false)
      
      Doc.async = false
      path = localappdata + "\SmartBear\TestComplete\14.0\tcSettings.xml"
      
      'load the xml settings file
      Doc.load(path)
      
      'get the node with settings
      Set jvmSetting = Doc.selectNodes("//Node[@name='{2e030b0e-f461-47e8-980a-56851ef43cff}']/Node[@name='{291fd292-a44f-4b82-9232-e8899ca6c851}']/Prp[@name='value']")
      
      if jvmSetting.length = 0 Then
        Log.Message ("JVM setting wasn't found")
      
      Else
        'log the value of the setting
        Log.Message ("Current JVM settings: " & jvmSetting(0).getAttribute("value"))
      
      End If
      
    End Sub
    

     

     

  • tristaanogre's avatar
    tristaanogre
    Esteemed Contributor

    question for clarification:

    I think, IIRC, that some of these options are stored in the user profile.  Are you assuming that the user that is running the automation to change the options is the same user for whom the changes should be made?