Forum Discussion

rancan's avatar
rancan
Occasional Contributor
4 years ago
Solved

Verifiy link address on firefox

Hi, I am still exploring on how TestComplete works.

 

Currently, I am trying to create a test to verifiy the support link provided on the software opens the expected website address.

 

As I have limited knowledge on the scripting, I am using keyword test method. When I recorded the test and used property checkpoint on the address bar, for example, i want to verify that the website address is 'https://community.smartbear.com/', it didn't show any Text property, only caption, and it didn't work.

 

When I tried to run it, it shows warning message, 'The "Text" property of the "Stub object" object does not meet the checkpoint's condition',

I am not sure why the address bar on the firefox is considered as a Stub object. 

Could anyone please help me how to verify website link inside the address search bar (I think it's a combobox)?

 

Thank you.

 

Kind regards,

Ran

  • lol ... no it was an example MyValue :smileyhappy:

     

    So here you must make that,

    function CheckWebURL(UrlToCheck) { 
    //Assuming that no need of browser exists check so just check if an url is given to be checked and if current browser current page url contains this url
    if (typeof UrlToCheck == 'string') {
    var posUrl = aqString.Find(Sys.Browser("*").Page("*").URL, UrlToCheck, 0 , false);
    return ((UrlToCheck != "") && (posUrl >=0) && (posUrl < 9))
    }
    else {
    Log.Message("UrlToCheck is incorrect");
    return false;
    }
    }

    typeof return the type of the variable

    it could be 'undefined', 'string', 'number' or 'Object'  (array are included in Object)

    Here you want a string, so checking if type is string is double check:  variable is definied and it's type is string.

     

    On your function, MyValue is here not defined ...

    And it will return return true, because by default function returns true. And you don't specify the return value in case of bad type (Log.Message doesn't change return value, Log.Error yes).

     

    Good place to learn data type here:

    https://www.w3schools.com/js/js_datatypes.asp

     

     

12 Replies

  • BenoitB's avatar
    BenoitB
    Community Hero

    To check the current bar url in current active browser is as simple as checking the Sys.Browser("*").Page("*").URL value

     

    • rancan's avatar
      rancan
      Occasional Contributor

      Hi,

       

      Sorry for the late response and thank you for replying on my question. 

       

      I tried to write a script as you said, however, i got the warning Ms Jscript Runtime error. 

      As I am not familiar with coding, here's what I have:

       

      function CheckWeb()
      {

      // Obtains the browser process
      var browser = Sys.Browser("firefox");
      // Obtains the page currently opened in Mozilla firefox
      var page = browser.Page("*");

      try{
      if (page == "www.google.com")
      {
      Log.Message("Support link checkpoint success " + page);
      }
      }

      catch(e)
      {
      //Handle exception
      Log.Message("Error: "+ e.name, e.description);
      }
      }

       

      Could you please help me with this? 

      Thank you very much

      • BenoitB's avatar
        BenoitB
        Community Hero

        you get the page object but you have to check the URL property so the test is
        if (page.URL == "your adress")

        But beware that page url can contains also all variables stuff starting at the end of the url with the ? sign
        So instead equality its better to use aqString.Find() or aqString.Contains()

         

        function CheckWebURL(UrlToCheck = "") {
          // Assuming that no need of browser exists check so just check if an url is given to be checked and if current browser current page url contains this url
          return ((UrlToCheck != "") && (aqString.Find(Sys.Browser("*").Page("*").URL, UrlToCheck, 0 , false) != -1))
        }
        

        But this method is incomplete  because if you have an url like http://myapp.jsp?errorvalue=www.google.com it will return true ..

         

        So ..

         

        function CheckWebURL(UrlToCheck = "") {
          // Assuming that no need of browser exists check so just check if an url is given to be checked and if current browser current page url contains this url
          let posUrl = aqString.Find(Sys.Browser("*").Page("*").URL, UrlToCheck, 0 , false);
          return ((UrlToCheck != "") && (posUrl >=0) && (posUrl < 9))
        }
        

        aqString.Find will return position into given string of the substring, -1 if not found so greater than -1

        But why < 9 ?

        Because if you give short url without protocol, you may prevent of that.

        Commons protocol are ftp://, http:// https://, mailto:   so longest is https:// which is 8 characters long.

         

        You can improve and secure this method with managing the current browser in use at global level (instead of using Browser("*"), use Browser(currentBrowser)), it's useful in tests with multiples browsers used in same time. Or pass the browser name in parameter of the function.

         

         

         

         

         

  • BenoitB's avatar
    BenoitB
    Community Hero

    rancan  did you need more info on check address bar ?

    If yes, please continue to discuss here and if it's ok you can click Accept solution..