Forum Discussion

ederlezi's avatar
ederlezi
New Contributor
7 years ago
Solved

How to get window information, if it disappears very quick ?

Hello,

 

I try to automate installation proces and it looks a bit difficult.  Let's say the main window of the installer is 500 pixels width and 300 pixel height. I have to press "Next" button few times. When I press "Next" button for the last time, installation process starts. Sometimes it lasts for a 2 seconds, sometimes it last for a 50 seconds, but on the slow PC's it may last even for 2 minutes. When the installation process gets to finish, there is an information appearing, that installation is completed and there is "Ok" button. I tried the solution with WaitWindow but in this case it does not work, becouse the installer is written in some strange way. When I try something like:

 

Sys.Process("Application").Window1.Window2.WatiWindow3(some parameters)

 

for some reason TestComplete can't do this operation becouse of overlaping window.

And now - there is something important to understand. When installation process starts, the main installer window remains almost the same, but another window shows up - let's say 500 pixels widht and 100 pixels height, it shows up in the center of my main installer window.

 

To solve this problem I can ignore overlaping windows in a project settings, but I don't want to do this. Another soultion is to put Delay command with some interval, just to wait until overlapping window would disappear, but this is not nice solution. What I would like to do is I would like to get as many information about the overlaping window while the application is running. The problem is, that I see it for only 2 seconds on my PC. This time is to short to identify the objects using spy tool. So that possible solutions that I see, but I don't know hot to do this:

 

- ignore overlaping windows from my python script just for installation time, but stop ignoring that as soon as installation process gets to finish. I don't know if I can change the settings of the project from script

 

- the solution that I really really would like to know - how to save all the processes with all possible information for testcomplete while application is running. I could analyze the process window withh all the processess that were created with all windows inside when the application stops.

 

- get a very slow PC, install TestComplete on it and then try to use spy tool on the window that shows up. But....come on....there must eb a better way.

 

Any comments ?

  • Well, it did not work as I expected. It produced the code like this:

     

    wndWixExtBA = Aliases.Micromedical_Installer.wndWixExtBA
    wndWixExtBA.Click(251, 54)
    wndWixExtBA.Click(253, 98)
    wndWixExtBA.Click(255, 128)

     

    But i found maybe not a perfect solution, but I found idea that help me solve my problem. While some automation script has been running, I invoke Test1() function every second line:

     

    def Test1():
      result=Sys.Process("Micromedical*", 2).Window("WixExtBA", "Micromedical*", 1).FindAll("FullName","*",1000)
      for element in result:
        if (element.VisibleOnScreen == True):
          Log.Message(element.FullName)

     

    My log contains now some information, that lets me make a deeper analyze and lets find what I have been looking for. 

2 Replies

  • NisHera's avatar
    NisHera
    Valued Contributor

    Most UI testing tools dose is mimic user interaction with AUT

    since you says it appears for 2 second, an actual user may most probably ignore it or just glance at what ever short message on it.

     

    you already doing ignoring at some point. if you need to read the message in mentioned window you can get a screen shot like this

     

    If I were you, need something more than that, would record a test with auto- name mapping on like this and click on the particulate window while appears on screen 

    • ederlezi's avatar
      ederlezi
      New Contributor

      Well, it did not work as I expected. It produced the code like this:

       

      wndWixExtBA = Aliases.Micromedical_Installer.wndWixExtBA
      wndWixExtBA.Click(251, 54)
      wndWixExtBA.Click(253, 98)
      wndWixExtBA.Click(255, 128)

       

      But i found maybe not a perfect solution, but I found idea that help me solve my problem. While some automation script has been running, I invoke Test1() function every second line:

       

      def Test1():
        result=Sys.Process("Micromedical*", 2).Window("WixExtBA", "Micromedical*", 1).FindAll("FullName","*",1000)
        for element in result:
          if (element.VisibleOnScreen == True):
            Log.Message(element.FullName)

       

      My log contains now some information, that lets me make a deeper analyze and lets find what I have been looking for.