dachikzuki
asked on
Passing credentials to an IE popup window in VBScript
I want to pass credentials to an IE site I launch since it prompts me. I don't want to pass my domain authentication because the authentication this uses is from a flatfile database so i want to just pass it a username and password.
the code below launches an IE site for something I'm automating on creating monitors and it prompts me for a username and password i would like to provide in the script. Any ideas?
the code below launches an IE site for something I'm automating on creating monitors and it prompts me for a username and password i would like to provide in the script. Any ideas?
If numServer > 0 Then
strLink= "http://ipmonitor.miamidade.gov:8080/em?form=importform&File=D%3A%5CConfigMonitors%5CMonitors.csv&File2=D%3A%5CConfigMonitors%5CRelationships.csv&Monitors=1&Groups=1&Profiles=1&Accounts=1&Reports=1&Jobs=1"
Set objIExplorer = CreateObject("InternetExplorer.Application")
objIExplorer.visible = True
objIExplorer.navigate strLink
Set objIExplorer = Nothing
End If
Autoit will do this but you have to register a dll on the machine it is executing. I normally keep it out in a share and at the begining of the script regester it
ASKER
I've heard of autoit and some people here use that but it's a headache to keep up with all the different "tools". Autoit would have made doing this in vbs a lot easier in general. Is there any way of doing it with just vbs?
See code below....
If numServer > 0 Then
strUsername = "your user id"
strPass = "your password"
strLink= "your http:// link"
Set objIExplorer = CreateObject("InternetExplorer.Application")
objIExplorer.visible = True
objIExplorer.navigate strLink
While objIExplorer.Busy = True
WScript.Sleep 100
Wend
While objIExplorer.ReadyState <> 4
WScript.Sleep 100
Wend
objIExplorer.Document.all.username.value = strUsername
objIExplorer.Document.all.password.value = strPass
objIExplorer.Document.Forms(0).Submit()
Set objIExplorer = Nothing
End If
in line 16 replace username with the "name" label for that field on site webpage
in line 17 replace password with the "name" label for that field on site webpage
in line 18 change Forms(0) to 0,1,2 or 3 depending on numer of forms on that website page
in line 17 replace password with the "name" label for that field on site webpage
in line 18 change Forms(0) to 0,1,2 or 3 depending on numer of forms on that website page
ASKER
Seems like exactly what i was looking for, however, the prompt is a windows prompt... it's not in a form. It seems like it doesn't even get to that part of the code before the prompt comes out. I attached a picture of the prompt so you can see what i mean.
prompt.bmp
prompt.bmp
ASKER
i put the code you gave me but it doesn't execute until after i answer the prompt i put in a pic above. This prompt is the one i have to supply my credentials to.
The authentication occurs on the server, so I am not sure if we can get focus of the windows prompt box. So we will have to use the sendkey method. However, the problem with this and the lack of taking focus is that while this script runs ( a few seconds), you should not move mouse, keyboard or have any other app take focus....If you can live with this ...then the following script will work fine..see below
If numServer > 0 Then
strUsername = "your user id"
strPass = "your password"
strLink= "your http:// link"
Set objIExplorer = CreateObject("InternetExplorer.Application")
objIExplorer.visible = True
objIExplorer.navigate strLink
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.SendKeys strUsername
WScript.Sleep 100
WshShell.SendKeys "{TAB}"
WScript.Sleep(100)
WshShell.SendKeys strPass
WScript.Sleep 100
WshShell.SendKeys "{TAB}"
WScript.Sleep 100
WshShell.SendKeys "{TAB}"
WScript.Sleep 100
WshShell.SendKeys "{ENTER}"
Set objIExplorer = Nothing
Set WshShell = Nothing
End If
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
You are the man! That worked out very well for me. I just had to add a small sleep timer before providing the username because it would race past it but it was exactly what i needed. Thank you!
ASKER
Excellent
Your welcome :)