singh54 Posted April 23, 2020 Posted April 23, 2020 (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 April 23, 2020 by singh54
Danp2 Posted April 23, 2020 Posted April 23, 2020 It looks like the site is using frames, so you would need to switch to the correct frame before you could interact with its contents. see _IEFrameGetCollection for starters. singh54 1 Latest Webdriver UDF Release Webdriver Wiki FAQs
faustf Posted April 24, 2020 Posted April 24, 2020 hi is possible have url of the site ?, and when you past code use a tag Code <> thankz
singh54 Posted May 4, 2020 Author Posted May 4, 2020 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
Danp2 Posted May 4, 2020 Posted May 4, 2020 @singh54 That code only tells us that it thinks you're using an outdated browser, so it isn't very helpful in answering your question. What's the URL? faustf and singh54 2 Latest Webdriver UDF Release Webdriver Wiki FAQs
singh54 Posted June 3, 2020 Author Posted June 3, 2020 (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 June 3, 2020 by singh54
Danp2 Posted June 3, 2020 Posted June 3, 2020 You probably need to trigger a Change event with jQuery. There are already examples of this on the forum. Good luck! singh54 1 Latest Webdriver UDF Release Webdriver Wiki FAQs
singh54 Posted June 9, 2020 Author Posted June 9, 2020 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.
singh54 Posted June 17, 2020 Author Posted June 17, 2020 (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 June 17, 2020 by singh54
Danp2 Posted June 17, 2020 Posted June 17, 2020 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? 🙄 Latest Webdriver UDF Release Webdriver Wiki FAQs
singh54 Posted June 17, 2020 Author Posted June 17, 2020 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.
Danp2 Posted June 17, 2020 Posted June 17, 2020 Those aren't really Autoit events. They are actually events that you are triggering in the web browser. You will find lots of info by Googling the word HTMLEvents singh54 1 Latest Webdriver UDF Release Webdriver Wiki FAQs
singh54 Posted June 17, 2020 Author Posted June 17, 2020 Really appreciate your help! Will go through the contents available on internet.
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now