What to do when a browser doesnt load?
Moderators: Dorian (MJT support), JRL
What to do when a browser doesnt load?
I have an issue with a file I download from a website. I have a script that executes in the morning before anyone enters the office. Sometimes this script executes perfectly, and sometimes it fails miserably. The only reason I can figure out that it would fail would be because the website that I am calling to load doesnt load up, and subsequently, the script fails to enter the username/password, then log in, click links and download the file. How would I go about making sure the window has loaded, and if it doesnt load, start the script over from the beginning, and try to load the page again? I would like it to continue to do this until the page actually loaded and then move on to the rest of the script. Any suggestions on how to make this work?
- Marcus Tettmar
- Site Admin
- Posts: 7395
- Joined: Thu Sep 19, 2002 3:00 pm
- Location: Dorset, UK
- Contact:
A number of ways - all depend on what method you are using of controlling the web page. If you're using WebRecorder you'll have the IEWait function which will wait for the page to load. Then when it's loaded you could use the ContainsText function to see if contains text that appears on the successful page. Choose some text that only appears on that page, or choose text that appears on an error page - you get the idea.
And/Or you could use the text capture function to see if text appears in the browser window - same idea - look for text that only appears on the correct page, so if you don't get that text the page hasn't loaded, and some other page exists instead - such as an error page. Or do it the other way round and look for the existence of error text.
Or use FindImagePos - same idea but look for something graphical.
I'm sure there are other methods.
And/Or you could use the text capture function to see if text appears in the browser window - same idea - look for text that only appears on the correct page, so if you don't get that text the page hasn't loaded, and some other page exists instead - such as an error page. Or do it the other way round and look for the existence of error text.
Or use FindImagePos - same idea but look for something graphical.
I'm sure there are other methods.
Marcus Tettmar
http://mjtnet.com/blog/ | http://twitter.com/marcustettmar
Did you know we are now offering affordable monthly subscriptions for Macro Scheduler Standard?
http://mjtnet.com/blog/ | http://twitter.com/marcustettmar
Did you know we are now offering affordable monthly subscriptions for Macro Scheduler Standard?
Synchronization with smart waits.
Hi Joe,
You need to add some synchronization to your script with some smart waits. You want the script to wait long enough for the browser window to display but you don't want to keep waiting needlessly after the window has displayed.
In this example I am assuming the window title changes when you have succesfully reached the website.
Of couse you need to decide what is a reasonable length of time to wait for one attempt. What if the website never loads?
If the website does not load on the first attempt, use a Repeat loop to try again and again for a reasonable number of attempts.
Something like this
Use a similar technique with other smart waits depending on whether you are waiting for text, an image, or whatever. For example, use WaitScreenImage if you are waiting for a graphic to display.
This code has not been tested, so use at your own risk!
Gale
You need to add some synchronization to your script with some smart waits. You want the script to wait long enough for the browser window to display but you don't want to keep waiting needlessly after the window has displayed.
In this example I am assuming the window title changes when you have succesfully reached the website.
Code: Select all
//Wait 5 minutes in case there is a problem at the web site
Let>WW_TIMEOUT=300
//Wait only for visible windows
Let>WF_TYPE=2
WaitWindowOpen>%websitename%*
//script will now wait 0-300 seconds until window open
//Did window ever open
if>WW_RESULT=FALSE
MDL>window did not open after 5 heroic attempts!
exit>
endif
SetFocus>>%websitename%*
If the website does not load on the first attempt, use a Repeat loop to try again and again for a reasonable number of attempts.
Something like this
Code: Select all
SRT>LoadPage
//Wait 5 minutes in case there is a problem at the web site
Let>WW_TIMEOUT=300
//Wait only for visible windows
Let>WF_TYPE=2
WaitWindowOpen>%websitename%*
//script will now wait 0-300 seconds until window open
END>
Let>nCounter=0
Repeat>nCounter
GoSub>LoadPage
if>WW_RESULT=TRUE
Let>nCounter=5
else>
Let>nCounter=%nCounter%+1
endif
Until>nCounter=5
//Did window ever open
if>WW_RESULT=FALSE
MDL>window did not open after 5 heroic attempts!
exit>
endif
SetFocus>>%websitename%*
//continue with script
This code has not been tested, so use at your own risk!
Gale
Just wanted to write back and say THANK YOU once again! So far it is working like a charm. I've not had the script fail on me once yet, so i sabotaged it just to make sure if the site didnt load it would write to a log file for me, and close out. Worked perfectly!!! I think I am going to change it to where it emails me instead of writing to a log file, but other than that, everything is great.
Thank you again!!!!
Joe
Thank you again!!!!
Joe