Forum Discussion

jmoe's avatar
jmoe
Contributor
2 years ago

Process & Popup Window not recognized

Hello,

I am a long time user & very familiar with TC up to version 14.93 and this is a first.   During an uninstall process from Add/Remove programs, a custom .NET confirmation window is displayed (install of the app is done through an .msi).  The popup window is in fact, an executable operating on its own thread.  Neither the window, nor it's process are recognized by Object Spy or Object Browser.  I also tried a Record session but that resulted in a one liner method "pass."  Strange indeed.  All filters in the OB are appropriately set to view all processes.  All extensions are installed.  I could see how a technology might not be supported and the window would not be "visible" to TC, but I'd think all user processes would at least display in the OB.  Any ideas on how to click through a series of two popup windows that TC has no clue about?

 

(Update) the install/uninstall was built with Windows WIX I'm told.

 

TIA

 

8 Replies

  • jkrolczy's avatar
    jkrolczy
    Regular Contributor

    How about try a script recording (without NameMapping on) and see what TestComplete generates code wise for you.  Reverse engineer to understand what is going on (if something is provided back from the script recording)

     

    • jmoe's avatar
      jmoe
      Contributor

      Hi James.  Thanks for the reply.  Yeah, tried that.  It was a one liner in the test method and all it said was "pass."  Strange.

  • rraghvani's avatar
    rraghvani
    Champion Level 3

    Using the Object Spy tool, are you able to capture the WndClass name of the window. If yes, can you add the WndClass name to Project Settings Properties -> Open Application -> MSAA

     

    Is the Object Spy tool now able to identify each of the UI Objects?

     

    • jmoe's avatar
      jmoe
      Contributor

      Hello rraghvani.  Thanks for the reply.  Absolutely nothing is returned, Object Spy, Object Browser, recording.  Like it doesn't exist, at least in TC's eyes.  But there it is displayed & in Task Manager.

  • Hi jmoe ,

     

    Assuming you can see the process in task manager, you could use that name to look for the process for a specified time and if found then terminate it.

     

    Something like this:

     

    if (Sys.WaitProcess("YourProcessName", 2000).Exists)
       Sys.Process("YourProcessName").Terminate();

     

     

    Or if you have the System.Diagnostics.dll added in the Project's CLR Bridge, like this:

     

    Then you could possible utilize DotNet, like this: 

     

    var processes = dotNET.System_Diagnostics.Process.GetProcessesByName("YourProcessName");
    for (var i = 0; i < processes.Length; i++)
    {
      var p = processes.Get(i);
      p.Kill();
    }

     

     

    Please note: this approach will terminate All process with the provided name.

     

    I hope this helps.

     

    Regards,

     

    • jmoe's avatar
      jmoe
      Contributor

      Thanks Chris, good idea.  I tried the first suggestion but same result, as in TC does not recognize the process, nothing returned.  For the second suggestion, I loaded from the GAC, but what is available to the dotNET object is the same, with or without the Process addition to the CLR Bridge.  In other words, the dotNET.System_Diagnostics.Process

      is not available (dotNET.System_Diagnostics does have some available, but not .Process).  Seems like TC is not recognizing the CLR change even though I tried install/uninstall/reload numerous times.  Dunno.

       

  • Kitt's avatar
    Kitt
    Regular Contributor

    jmoe is this a UAC pop-up, where you are unable to move past the message until it is acknowledged? References and [here] and [here] may provide some insight.

  • rraghvani's avatar
    rraghvani
    Champion Level 3

    I'm not familiar with Windows WIX. However, I was able to interact with the WIX installer controls by adding the name to MSAA

     

     

    Are you able to provide a screen shot of your uninstaller?

     

    Are you not able to use command line arguments to un/install the application through TC?