Page 1 of 1

WebDocument.WaitForDocumentLoaded()

Posted: Wed Nov 26, 2014 7:47 am
by mumu
Ranorex 5.2.0.20272
Window 8 Pro x64

Code: Select all

InputTag GoogleSearch = "/dom[@domain~'www.google.com']//input[@name='q']";
GoogleSearch.PressKeys("asdasdas{return}");
WebDocument WebVE = Host.Local.FindSingle("/dom[@domain~'www.google.com']");
//Since original search page domain is the same 'www.google.com', will Ranorex confused the page/web loaded completely ?
//If i change to @Caption='asdasdas' , Ranorex will throw exception if the result page havent loaded in seconds.
WebVE.WaitForDocumentLoaded();
or using other method like .WaitForExists() / EnsureVisible(). If using WaitForExists() / EnsureVisible(), we need to wait for the particular object/element to exists/visible. if the loading time exceed, Ranorex will throw exception....Either way if the page show error, Ranorex will still waiting untill duration finish and then only throw exception. (waste of time).

which is the best practice for Ranorex?

Re: WebDocument.WaitForDocumentLoaded()

Posted: Wed Nov 26, 2014 2:35 pm
by krstcs
First, Ranorex waiting for the full duration is only a waste of time if someone is sitting and watching the test run, which you should not need to do. It is how Ranorex works. Ranorex continues to try to find the item for that whole time, it's not just sitting there waiting for the timeout and not doing anything. On top of that, automated testing is not about speed as much as it is about consistency. Humans are not consistent. Computers will always do things the same way. This is the purpose and priority of automation. Speed is a secondary benefit.

Second, Ranorex throws exceptions when it doesn't find an item. That's just the mechanism they decided to use for this. (In my opinion it is the correct way to do it.) You could catch the exception and do something with it if you don't want to see it.

Third, if you know that the system under test will throw an error, you should be testing for the presence of the error directly, given the appropriate inputs. This will make the test faster and more precise. You should know every time that the error is going to appear. If you don't know there will be an error then you either need to learn more about the system under test, or you need to talk to your developers about the circumstances under which the error will occur so you know what to test for. You might be able to implement a PopupWatcher that would handle the error.

Finally, as for which is better, it all depends on what you are trying to do. I typically go with WaitFor(Exists/NotExists) because you can specify the timeout directly. And if you setup your RXPath correctly you can even use it as a validation step.

Re: WebDocument.WaitForDocumentLoaded()

Posted: Fri Nov 28, 2014 8:13 am
by mumu
thanks krstcs for reply
.WaitForDocumentLoaded() method seem no functioning correctly, sometime page still loading and .WaitForDocumentLoaded() finish and proceed to the next command. It is related to webdocument ?
How to implement this method correctly?

Re: WebDocument.WaitForDocumentLoaded()

Posted: Mon Dec 01, 2014 1:53 pm
by Support Team
Hello mumu,

The WaitForDocumentLoaded() method checks the state of a webpage. If the webpage contains dynamic elements it’s possible that the page is fully loaded but the elements within aren’t. I would also recommend using the WaitFor() method in that case.

Regards,
Robert