Jump to content
singh54

Auto Login to a website using Internet Explorer

Recommended Posts

Posted (edited)

Hello All,

I am new to auto It  and coding. Have only tried few automated logging for different websites.  The login pages of the websites which I have worked on were having form name with input type as text and it seems straight forward to automate their login using "_IEFormElementSetValue".

I have got a url, it does not have any form in the source page. On further analyzing I found that It does call some login page separately as below.

function showLogin(arg) {
  Global.pollingDialogDoc = null;
  var fresh = jQuery.isValidString(arg) && "fresh" == arg ? !0 : !1, appFrame = $("#appFrame");
  if ($("#modalFrame").show(), $("iframe").hide(), fresh || !appFrame.attr('src').match("html/login.html")) appFrame.attr('src', baseURL + 'html/login.html'), 
  appFrame.on('load', function() {
    setTimeout(function() {
      $("#modalFrame").hide(), appFrame.show();
    }, 1);
  }); else try {
    window.frames.appFrame.updatePageFromIndex();
  } catch (e) {}
}

I can simply use "send" and "mouse click" Method to automate the login but that doesn't seems very reliable. Is there any separate way to fill the user ID and password to the respective fields by having reference by frames or something. 

Appreciate if any one can point me to correct document or help in any way...!

Edited by singh54

Share this post


Link to post
Share on other sites

hi is possible have url of the site ?, and when you past code use a tag Code  <>  thankz

 

Share this post


Link to post
Share on other sites

Hello ,

Appreciate your response, I have another website which does use JSP in background. Following is the source code for the same. Can any one help me in pointing to the correct direction for automating the login for this website. 
================================================

<!doctype html><html class="no-js" ng-app="rainierApp"><head><meta charset="utf-8"><title>{{ 'brand-company' | translate }} {{ 'brand-rainier' | translate }}</title><link rel="icon" href="favicon.ico?v=1"><meta name="description" content="{{ 'brand-company' | translate }} {{ 'brand-rainier' | translate }}"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no"><!-- Place favicon.ico and apple-touch-icon.png in the root directory --><link rel="stylesheet" href="styles/vendor.23c8625b.css"/><link rel="stylesheet" href="styles/main.b362bd11.css"/></head><body><!--[if lt IE 7]>
<p class="browsehappy">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade
    your browser</a> to improve your experience.</p>
<![endif]--><!--Application stage--><div ng-view=""></div><!--[if lt IE 9]>
<script src="scripts/oldieshim.13b0bde1.js"></script>
<![endif]--><script src="scripts/vendor.a2691c43.js"></script><script src="scripts/scripts.1794f2ab.js"></script></body></html>

===================================================

Regards,
Shyam

Share this post


Link to post
Share on other sites
Posted (edited)

Hello Danp2,

The URL won't be accessible. I have used inspect in google chrome and was able to get the below code for the login page.

-------------------------------------------------------------------------------------------------------------------------------------------------------
<form ng-submit="model.submitAction()" class="ng-pristine ng-valid">

<div class="ds-login-text-inputs"><div class="ds-label-input-container"><label class="ds-label ng-binding">Username</label><input ng-model="model.username" class="ds-text-input ng-pristine ng-untouched ng-valid ng-empty" placeholder="Enter text" type="text" autofocus=""></div>

<div class="ds-label-input-container"><label class="ds-label ng-binding">Password</label><input ng-model="model.password" class="ds-text-input ng-pristine ng-untouched ng-valid ng-empty" placeholder="Enter text" type="password"></div></div>

<div class="ds-login-submit-buttons"><div class="ds-login-remember-me"><!-- No remember me checkbox --></div><button ng-disabled="isEmptyInput(model.username) || isEmptyInput(model.password)" class="ds-button-primary ng-binding" type="submit" role="button" disabled="disabled">Log in</button></div>

</form>

-------------------------------------------------------------------------------------------------------------------------------------------------------

I am successfully able to put the credentials in the username and password field but the login button won't get enabled unless there is no keyboard simulation in both the fields. Not sure how to proceed further, please find my code below.

#include <IE.au3>

Local $oIE = _IECreate("https://serverhost/" )
Local $oForm = _IEFormGetCollection($oIE, 0)

Local $oQuery = _IEFormElementGetCollection($oForm, 0)
Local $oQuery1 = _IEFormElementGetCollection($oForm, 1)

_IEFormElementSetValue($oQuery, "username")  ; puts value to username
_IEFormElementSetValue($oQuery1, "VerySecuredpassword") ; Puts values to password

Appreciate your help on the same. 

Edited by singh54

Share this post


Link to post
Share on other sites

Hi,

Thank you very much for the help, I am looking into it but was just wondering if there is any other way by which I can achieve this ?

I am trying the following code .

Local $oIE = _IECreate("URL" )
Local $hWnd = _IEPropertyGet($oIE, "hwnd")

Local $oForm = _IEFormGetCollection($oIE, 0)

Local $oQuery = _IEFormElementGetCollection($oForm, 0)
Local $oQuery1 = _IEFormElementGetCollection($oForm, 1)

_IEAction($oQuery, "focus")
ControlSend($hWnd, "", "[CLASS:Internet Explorer_Server; INSTANCE:1]", "username") ; It is working fine.
_IEFormElementSetValue($oQuery1, "Verystrongpassword")

Sleep(5000)
_IEAction($oQuery1, "focus")
ControlSend($hWnd, "", "[CLASS:Internet Explorer_Server; INSTANCE:1]", "{space} {BS}") ; to stimulate the keypad action but it is not working as expected :(

Send ("{ENTER}")

It actually opens in private Internet explorer, not sure how and behaves strangely, sometimes the password is not completely sent.

Share this post


Link to post
Share on other sites
Posted (edited)

Hello Danp2,

Hope you are doing good..! I  have tried  many different codes found in this forum and at last the following code runs fine and was able to login.

1 Out of 5 times I have seen that the url throw an "invalid user and password error", I am not sure on the root cause yet. I wanted to know your thoughts on the same.

#include <IE.au3>

Local $oIE = _IECreate("URL" )

Local $oForm = _IEFormGetCollection($oIE, 0)

Local $oQuery = _IEFormElementGetCollection($oForm, 0)
Local $oQuery1 = _IEFormElementGetCollection($oForm, 1)
Local $oQuery2 = _IEFormElementGetCollection($oForm, 2)

_IEAction($oQuery, "focus")
_IEFormElementSetValue($oQuery, "username")
Local $oEvt = $oIE.document.createEvent("HTMLEvents")
$oEvt.initEvent("change", True, False)
$oQuery.dispatchEvent($oEvt)

_IEAction($oQuery1, "focus")
_IEFormElementSetValue($oQuery1, "VeryStrongPassword")
Local $oEvt = $oIE.document.createEvent("HTMLEvents")
$oEvt.initEvent("change", True, False)
$oQuery1.dispatchEvent($oEvt)

; The change event above was able to enable the submit button and I am using IEAction to simulate click.

_IEAction($oQuery2, "focus")
_IEAction($oQuery2, "Click")

In addition to that, I want to learn more on events available in autoit. I would really appreciate if you can point me to any available URL where I can learn this in detail.

Edited by singh54

Share this post


Link to post
Share on other sites
6 minutes ago, singh54 said:

Out of 5 times I have seen that the url throw an "invalid user and password error", I don't see any issue with my code. Could you please help if there is anything I can do to avoid this error.

There's no error checking in your code, so that would be a good place to start.

7 minutes ago, singh54 said:

While working on this, I got curious to learn more on events available in auto it. I would really appreciate if you can point me to any available URL where I can learn this in detail.

Not curious enough to use Google? 🙄

Share this post


Link to post
Share on other sites

HI Danp2

Apologies, I might be asking for very trivial help as I am very new to programming, started 3 months back only :( .
Also, I tried from my end and still trying to find the details of events in AUTOIT. 

 

Share this post


Link to post
Share on other sites

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

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By Zaoka
      I'm trying to create script that would login on my SAP WEBI "web page" and replace some uploaded excel files. But i'm having problem on even the log in.
      These are user fill elements with Firefox Inspector
      <input type="text" id="_id0:logon:CMS" name="_id0:logon:CMS"> <input type="text" id="_id0:logon:USERNAME" name="_id0:logon:USERNAME"> <input type="password" id="_id0:logon:PASSWORD" name="_id0:logon:PASSWORD"> LogOnButton
      <input type="submit" id="_id0:logon:logonButton" value="Log On" class="logonButtonNoHover logon_button_no_hover" onmouseover="this.className = 'logonButtonHover logon_button_hover';" onmouseout="this.className = 'logonButtonNoHover logon_button_no_hover';">  
       
      My example, I tried _IEGetObjByName and _IEGetObjById but the script only open page but will not even fill out the form
        #include <IE.au3> Call("signIn") Func signIn() Global $oIE = _IECreate("http://192.xxx.xxx.xx:xxx/BOE/BI") Sleep (5000) Local $server = _IEGetObjByName($oIE, "_id0:logon:CMS") Local $username = _IEGetObjByName($oIE, "_id0:logon:USERNAME") Local $password = _IEGetObjByName($oIE, "_id0:logon:PASSWORD") Local $button = _IEGetObjById($oIE, "_id0:logon:logonButton") _IEFormElementSetValue($server, "TestServer:1000") _IEFormElementSetValue($username, "MyUserName") _IEFormElementSetValue($password, "MyPass") ; THIS PART ABOUT BUTTON CLICK I DONT UNDERSTAND AT ALL $sSelector = "body > div:nth-of-type(2) > div > div:nth-of-type(3) > div > table > tbody > tr > td > table > tbody > tr > td > table > tbody > tr:nth-of-type(1) > td > div > div:nth-of-type(1) > form > div:nth-of-type(5) > button" $signInUC = $oIE.document.QuerySelector($sSelector) _IEAction($signInUC, "click") EndFunc ;==>signIn  
      I would be very grateful for any help
    • By malicioussoap
      back when I was still doing autohotkey you could write (in code) spanisha::á
      and whenever you were in google docs or notepad you could type (in the document) spanisha  and it instantly turns it into á 
      I tried doing this in autoit, here's what I have so far (my entire code so if this language requires a main function or a return/exit to function properly please let me know):
      ;is this a proper comment? HotKeySet ( "spanisha" , "SendAltered" ) Func SendAltered() Send("á", flag = 0); EndFunc I assume that autoit follows a sort of contemporary hotkey pressing model where you have to hold all keys at the same time? which makes this impossible. So
      I'm wondering if anyone has a workaround for this? or maybe an alternative to HotKeySet()
      I have a vague memory of someone saying that doing something like spanisha:á would work. I don't know if I'm slightly off syntax but this doesn't work.
      Also I tried doing 
      ;is this a proper comment? ;HotKeySet ( "a" , "SendAltered" ) ;spanisha::á Func SendAltered() Send("á"); EndFunc just to try and debug,
      I'm also wondering if my approach is fundamentally wrong since HotKeySet() was made for something like !^A. Or if Send() is syntactically wrong.
      I'm also noticing on these forums that specifying installation is important so to whom it may concern I downloaded both installers, editor and main files. Although I'm about to be real mad if the editor installation makes a difference.
    • By shelly
      I have to press tab to reach a selected button then double click on that
      Here's my script but its not working:
      WinActivate("Policy Decisions -- Webpage Dialog","")
      Sleep(3000)
      Send("{TAB}")
      Send("{TAB}")
      Send("{TAB}")                    // at this point its working according to my need  but double click is not working
      Mouseclick("Left",510, 320, 2, 0)

    • By TheDcoder
      See this thread for info:
    • By adityaparakh
      Hello ,

      A website I am trying to login with my credentials.
      And retrieve the cookie into a text file.
      Unable to do so.
      Is it that certain,  Httponly , type - are not allowed to be fetched.

      Then further ,
      I will be checking every 5 minutes if my session is active , else re-login and re-fetch the cookie.
      For the second part , I will probably fetch some table and see if not in appropriate format do Part 1 : Fetch Cookie - again.
      Any better way , tips would be appreciated.
       
      Thanks
       
×
×
  • Create New...