Jump to content

Recommended Posts

Posted

Hi Folks.  Looking for a little assistance to help login to one of my company's application's web pages.  These are Intranet based pages, and not open to the general public, and I will try to provide the code and screen shots where I can.  I have been attempting to get this login script to work for quite some time.  Any help would be appreciated. 

I have 3 types of issues here.

1.  using the basic _IEFormElementSetValue, instead of replacing the grayed out verbiage (user name) with an un-grayed out text (actual user name in black type font), it does enter the user name, but it is entered still as grayed out text in the input box.

2.  to get the above to work, i've replaced using _IEFormElementSetValue and instead use an "_IEAction" (2 actually - focus / select all) then a "send" to manually put in the username.  This works upon initial launch of the page, but when logged out, and logging back in, the IEactiion and send fail to enter the fields.

3.  My company has an .hta application that launches a reporting app, but the page is designed exactly the same as the web page, (except the app contains the code - the .hta app), but it is still the exact same fields defined.  Theoretically knowing the input boxes names as I do and that they're the same, I should be able to log into this app the same way.  However, I can not.  I once contacted dale through email to question why the .hta app would not respond, and he gave me some ideas, and stated if I still have issues, to post a topic here.  so this is what I'm doing, because I still have issues with the .hta app.  And I've also tried to attach to the .hta application as an embedded application, but still could not get the fields to populate (log in screen).

I have attached screen shots of the intial view of the sign on page, and the view of an attempted signon using _IEFormElementSetValue.

Here is my code to attempt to attach / launch-create the web page.

Func _LaunchAdminApp  ()
    If      $CurServNam= "" Then Return
    If      WinExists("PCDS :: Management") Then Return
    Local   $FTMAddress= "https://"&$CurServNam&"/admin"
    If      NOT WinExists("Fluency for Imaging Log On") Then
            Local $oIE = _IECreate($FTMAddress)
        Else
            Local $oIEWhnd = WinGetHandle("Fluency for Imaging Log On")
            Local $oIE = _IEAttach($oIEWhnd)
    EndIf
    Local   $Count     = 0
    If $AdmAutoLogin   = 1 Then
        If $LoginIDAA = "" Then Return
        Do
            $Count+=1
            Sleep(100)
            If $Count > 30 Then
                MsgBox(0,"Sorry","Can't sign in to Admin App!")
                Return
            EndIf
        Until IsObj($oIE)
        Local   $oForm     = _IEFormGetCollection($oIE,0)
                $Count     = 0
        Do
            $Count+=1
            Sleep(100)
            If $Count > 30 Then
                MsgBox(0,"Sorry","Can't sign in to Admin App!")5
                Return
            EndIf
        Until IsObj($oForm)
        WinActivate($oIE)
        Local   $oQueryUser= _IEFormElementGetObjByName ($oForm,     "UserName"       )
        Local   $oQueryPW  = _IEFormElementGetObjByName ($oForm,     "PasswordDisplay")
        Local   $CompID    = _IEFormElementGetObjByName ($oForm,     "Domain"         )
        Local   $oSubmit   = _IEFormElementGetObjByName ($oForm,     "loginBtn"       )
        Sleep(500)
                            ;_IEAction                  ($oQueryUser,"focus"          )
                            ;_IEAction                  ($oQueryUser,"selectall"      )
                            ; Send                      ($LoginIDAA                   );this will work only for initial login, not for subsequent log in's after logoff.
                             _IEFormElementSetValue     ($oQueryUser, $LoginIDAA      );this does not work.  enters name in gray text, app does not think its there, but can see it.
                            ;_IEAction                  ($oQueryPW,  "focus"          )
                            ;_IEAction                  ($oQueryPW,  "selectall"      )
                            ; Send                      ($PasswordAA                  );this will work only for initial login, not for subsequent log in's after logoff.
                            _IEFormElementSetValue      ($oQueryPW,  $PasswordAA      );this does not work.  enters password in gray text, app does not think its there, but can see it.
                            _IEFormElementOptionSelect  ($CompID,0,1,"byIndex"        )
        Sleep(5000)
        If IsObj($oSubmit) Then $oSubmit.click()
    EndIf
    If $CloseAfSelAA   = 1 Then Exit
EndFunc

Basically, i'm checking to see if the pages exists first, then either creating a page or attaching to a page depending upon the results of the check.

I've also attached the source for the signon page for the web app.  Note that the code delivered via the .hta for sign on is exactly the same.

any and all suggestions are most welcome.  I'm at my witts end here! 

Thanks in advance!  (I love AutoIT! and this site!)

view of signon screens.zip

Company Application Signon Page.html

Posted

I dont know if it will help but firstly your do loop for sleep has a max time out of 3 seconds.

When I automate a page I focus on the form and when I submit all values are recognized. I think I had a problem too until I put in the IEAction Focus (which I see is commented out in yours)

_IENavigate($oIE, "Somepage.com")
    _IEAction($oIE, "stop")
    Local $oForm = _IEFormGetObjByName($oIE, "searchform")
    _IEAction($oForm, "focus")
    If @error Then ConsoleWrite ( @CRLF & "Error Parameter: " & @extended & " / Error: " & @error & @CRLF)
    _IEFormElementRadioSelect($oForm, 0, "dec", 1, "byIndex")
    $oText = _IEFormElementGetObjByName($oForm, "latt")
    _IEFormElementSetValue($oText, $strLat )
    $oText = _IEFormElementGetObjByName($oForm, "longt")
    _IEFormElementSetValue($oText, $strLon )
    _IEFormSubmit($oForm)
Posted (edited)

I do appreciate the reply.  just so you know, it is commented because I have tried both methods.  when I use IEFormElementSetValue, it grays the text.  when I REM out IEFormElementSetValue, and only use send (with focus), it works, but only for the iecreate.  not with ieattach.  I can't get ieattach to work either way.  I may try, as you mentioned, a combination of both when I get home.  I will post back later.   thanks again for the response!

<got home>

Tried the fix from Shane0000 (thanks). and it fixed item number 1, although I also added an additional line of text, because I now noticed for some reason, there are 2 input's for the password ("PasswordDisplay" and "Password").  So I went ahead and sent the password to both using the fix from Shane0000, and it works for item number 1 now, without having to use the "send" command.  I'm excited about that! 

Func _LaunchAdminApp  ()
    If      $CurServNam= "" Then Return
    If      WinExists("PCDS :: Management") Then Return
    Local   $FTMAddress= "https://"&$CurServNam&"/admin"
    If      NOT WinExists("Fluency for Imaging Log On") Then
            Local $oIE = _IECreate($FTMAddress)
        Else
            Local $oIEWhnd = WinGetHandle("Fluency for Imaging Log On")
            Local $oIE = _IEAttach($oIEWhnd)
    EndIf
    Local   $Count     = 0
    If $AdmAutoLogin   = 1 Then
        If $LoginIDAA = "" Then Return
        Do
            $Count+=1
            Sleep(200)
            If $Count > 30 Then
                MsgBox(0,"Sorry","Can't sign in to Admin App!")
                Return
            EndIf
        Until IsObj($oIE)
        Local   $oForm     = _IEFormGetCollection($oIE,0)
                $Count     = 0
        Do
            $Count+=1
            Sleep(200)
            If $Count > 30 Then
                MsgBox(0,"Sorry","Can't sign in to Admin App!")5
                Return
            EndIf
        Until IsObj($oForm)
        WinActivate($oIE)
        Local   $oQueryUser= _IEFormElementGetObjByName ($oForm,     "UserName"        )
        Local   $oQueryPW1 = _IEFormElementGetObjByName ($oForm,     "PasswordDisplay" );where did this come?  -  <input  id="PasswordDisplay"
        Local   $oQueryPW2 = _IEFormElementGetObjByName ($oForm,     "Password"        );                      -  <input  id="Password"
        Local   $CompID    = _IEFormElementGetObjByName ($oForm,     "Domain"          )
        Local   $oSubmit   = _IEFormElementGetObjByName ($oForm,     "loginBtn"        )
        Sleep(500)
                            _IEAction                   ($oQueryUser,"focus"           )
                            _IEAction                   ($oQueryUser,"selectall"       )
                             Sleep(500)
                            ;Send                       ($LoginIDAA                    );this will work only for initial login, not for subsequent log in's after logoff.
                            _IEFormElementSetValue      ($oQueryUser, $LoginIDAA       );this does not work.  enters name in gray text, app does not think its there, but can see it.
                            _IEAction                   ($oQueryPW1,  "focus"          )
                            _IEAction                   ($oQueryPW1,  "selectall"      )
                             Sleep(500)
                            ;Send                       ($PasswordAA                   );this will work only for initial login, not for subsequent log in's after logoff.
                            _IEFormElementSetValue      ($oQueryPW1,  $PasswordAA      );this does not work.  enters password in gray text, app does not think its there, but can see it.
                            _IEAction                   ($oQueryPW2,  "focus"          )
                            _IEAction                   ($oQueryPW2,  "selectall"      )
                             Sleep(500)
                            _IEFormElementSetValue      ($oQueryPW2,  $PasswordAA      )


                            _IEAction                   ($CompID,    "focus"           )
                             Sleep(500)
                            _IEFormElementOptionSelect  ($CompID,0,1,"byIndex"         )
        Sleep(500)
        If IsObj($oSubmit) Then $oSubmit.click()
    EndIf
    If $CloseAfSelAA   = 1 Then Exit
EndFunc

Thanks.  1 down.  2 to go!

Still won't re-login after logging out.  (item 2 above).  and still nothing from the .hta app (that uses the same code as the web page).

Any further assistance would be greatly appreciated.  Please don't forget I've attached screenshots in a zip, and the .html code page for the login page.

Thanks again!

Edited by kalel69

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...