VB to monitor Internet Explorer's progress Bar

Hi,
I'm tring to automate entry into a  series of web pages using VBA

I'm having great difficulty getting my code to wait for the next screen to appear when a button is clicked.

I've tred both READYSTATE and .Busy and neither work

READYSTATE_COMPLETE  and Busy=false are set the instant the button is clicked
I think this may be because the buttons are firing javascript suncitons, not HTML links

I've tried hard-coding Waits into the code, but it isn't really adequate

I have noticed  though , when the buttons are clicked, in every case the Internet Explorer progress bar appears and more-or-less disappears then the update is complete.

Is there anyway in VB to monitor the value or state of the progress bar in an Internet Explorer object?

Thanks
greepAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

RobSampsonCommented:
Hi,

objIE.ReadyState or objIE.Busy really should work.....what version of IE, and what OS are you using?

Here's how I use that in VBS....

Regards,

Rob.
strURL = "http://www.experts-exchange.com"
Set objIE = CreateObject("InternetExplorer.Application")
objIE.Visible = True
objIE.Navigate "about:blank"
WaitForIE
objIE.Navigate strURL
WaitForIE
 
objIE.Document.form1.uname.Value = "username"
objIE.Document.form1.upassword.Value = "password"
objIE.Document.form1.submit
 
Set objIE = Nothing
MsgBox "Done"
 
Sub WaitForIE
	On Error Resume Next
	While objIE.ReadyState <> 4
		WScript.Sleep 100
	Wend
	While objIE.Busy = True
		WScript.Sleep 100
	Wend
	Err.Clear
	On Error GoTo 0
End Sub

Open in new window

0
greepAuthor Commented:
Hi Rob
it seems to work OK if I use .navigate
       (see first code snip)
But not if I use Sendkeys.        (see second snip)
My problem Is that the last part of the sequence  (GLTR + Enter)  triggers a Java Function that re-populates a fame with a set of inputs and buttons   I have no way of finding the source for this new set of controls, and they do not appear when I query the objIE page elements.
The only way I seem to be able to get to them is to use Sendkeys to push the cursor to the relevent element.
But when I send "Enter"  .readystate and .busy are instanstly set and the subsequent code does not input correctly
Any suggestions gratefuly received
Regards
Mike
    Set objIE = CreateObject("InternetExplorer.Application")
    objIE.Visible = True
    objIE.Navigate "http://edauat.company.net/system/"
    WaitForIE
    objIE.Document.all("USERNAME").Value = uid
    objIE.Document.all("PASSWORD").Value = pw
    objIE.Navigate "javascript:submitForm();"
    WaitForIE
    objIE.Document.selectRole.role.Value = 1000004
    objIE.Navigate "javascript:selectRole();"
    WaitForIE
    objIE.Document.all("quickJump").Value = "GLTR"
    objIE.Navigate "javascript:SubmitQuickJump();"
    WaitForIE
--------------------------------------------------------
    objIE.Navigate "http://edauat.company.net/system/"
    objIE.Visible = True
    WaitForIE
    AppActivate objIE
    sendkeys "J960066{TAB}33kingko~", True
    WaitForIE
    AppActivate objIE
    sendkeys "{DOWN 7}~", True
    WaitForIE
    AppActivate objIE
    sendkeys "{TAB 5}GLTR~", True
    WaitForIE

Open in new window

0
RobSampsonCommented:
Hmmm, if you knew the name of the JavaScript function (which you might be able see from the Source, or from the Status Bar as you hover over the link), you can try to execute it using this:

objIE.document.frames.execScript "window.document.JavaScriptFunctionName();", "JavaScript"

Regards,

Rob.
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Visual Basic Classic

From novice to tech pro — start learning today.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.