Forum Discussion

Moulya_p's avatar
Moulya_p
Occasional Contributor
6 years ago
Solved

How do I switch between two browser windows?

Hello Everyone,

 

I have a script where I need to switch back to the previously opened browser window and perform some actions using TestComplete. I tried using the SetFocus() and Focus() method to activate a particular window. But it is not working.

 

I have been searching for information on the most proficient method to do this, yet I'm learning as I go, and I've invested excessively energy attempting to assemble this test. I trust this is a moderately basic kind of test that others have composed previously. Would someone be able to provide me the most ideal approach to this test? Any kind of help would be highly appreciated. Thanks in advance.

  • Hi,

     

    Usually, for web testing with TestComplete, you should work with Page object that is a child of the browser process but not with browser windows.

    With this in mind, just refer to the required Page and it should be activated by TestComplete itself.
    E.g.:

    var page1 = Aliases.browser.Page('www.example.com/AdministerUsers/*');

    ...

    // some link/button was clicked that opens new page

    var page2 = Aliases.browser.Page('www.example.com/CommonUsersArea/*');

    ...

    // do something within page2

    ...

    // switch back to page1

    page1.Button('Create new user').Click();

    ...

     

  • Yes, we also follow the same approach - POM. And created NameMapping for each page - HomePage, HelpPage, etc.

    Each page can be accessed like - 

    Alaises.webApp.homePage....

    Alaises.webApp.helpPage....

5 Replies

  • AlexKaras's avatar
    AlexKaras
    Champion Level 3

    Hi,

     

    Usually, for web testing with TestComplete, you should work with Page object that is a child of the browser process but not with browser windows.

    With this in mind, just refer to the required Page and it should be activated by TestComplete itself.
    E.g.:

    var page1 = Aliases.browser.Page('www.example.com/AdministerUsers/*');

    ...

    // some link/button was clicked that opens new page

    var page2 = Aliases.browser.Page('www.example.com/CommonUsersArea/*');

    ...

    // do something within page2

    ...

    // switch back to page1

    page1.Button('Create new user').Click();

    ...

     

    • SaravanaKumar_N's avatar
      SaravanaKumar_N
      Contributor

      Yes, we also follow the same approach - POM. And created NameMapping for each page - HomePage, HelpPage, etc.

      Each page can be accessed like - 

      Alaises.webApp.homePage....

      Alaises.webApp.helpPage....

      • AlexKaras's avatar
        AlexKaras
        Champion Level 3

        SaravanaKumar_N:
        Hi,

         

        we also follow the same approach - POM.

        Actually, in my reply I talked about page object provided by TestComplete for web pages opened in browsers, but not about Page Object Model pattern.

        While you may implement it in your TestComplete code, TestComplete already provides a kind of it via its objects tree of the tested application (visualized in the Object Browser) and Namemapping/Aliases. However, implementation of POM in Selenium and Aliases in TestComplete has a different architecture and may cause unexpected behaviour if used blindly like in code samples for Selenium/Appium/etc. without considering TestComplete's specifics.

         

    • Moulya_p's avatar
      Moulya_p
      Occasional Contributor

      Thanks a lot Alex, I will give it a try.