Jump to content
horstj

Help with IE form fill

Recommended Posts

horstj

Hi All,

I am having a bit of trouble filling in some input boxes on a certain website. I have tried all kinds of different iterations of the following script, but can't get anything to work.

#include <IE.au3>
Run("C:\Program Files (x86)\Internet Explorer\iexplore.exe -new http://acc.rollernet.us/","")
$RollerHwnd = WinWaitActive("[TITLE:Roller Network Control Center - Windows Internet Explorer; CLASS:IEFrame]")
$rollerIE = _IEAttach($RollerHwnd,"HWND")
$rollerForm = _IEFormGetCollection($rollerIE)
;Logs into the Rollernet admin portal
$roller_username = _IEFormElementGetObjByName($rollerForm,"username")
$roller_password = _IEFormElementGetObjByName($rollerForm,"password")
_IEFormElementSetValue($roller_username,"Username")
_IEFormElementSetValue($roller_password,"Password")

I have used a variation of this exact code for another website without any problems. Does anyone see what I am missing? Any help would be greatly appreciated!

Share this post


Link to post
Share on other sites
water

You need to add some error checking to your code! Every _IE* function sets @error if there was a problem.

Edited by water

My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2018-12-03 - Version 1.4.11.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (2018-10-31 - Version 1.3.4.1) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
PowerPoint (2017-06-06 - Version 0.0.5.0) - Download - General Help & Support
Excel - Example Scripts - Wiki
Word - Wiki
 
Tutorials:

ADO - Wiki

 

Share this post


Link to post
Share on other sites
horstj

Thanks water. I didn't do any error checking with @error, but here is the output when I run the script:

IE.au3 V2.4-0 Error from function _IEPropertyGet, $_IEStatus_InvalidObjectType

--> IE.au3 V2.4-0 Error from function _IEFormElementGetObjByName, $_IEStatus_InvalidObjectType

--> IE.au3 V2.4-0 Error from function _IEFormElementGetObjByName, $_IEStatus_InvalidObjectType

--> IE.au3 V2.4-0 Error from function _IEFormElementSetValue, $_IEStatus_InvalidDataType

--> IE.au3 V2.4-0 Error from function _IEFormElementSetValue, $_IEStatus_InvalidDataType

From all of my testing, it seems that the problem exists around the _IEFormGetCollection function. Is that the best way to get the password and username input fields? They are in an unamed form which makes things interesting as well.

Share this post


Link to post
Share on other sites
horstj

Thanks DedekPredek. Did you test that out on your machine at all? I had tried that before and it actually gives me the same errors as my previous post, but with

--> IE.au3 V2.4-0 Warning from function _IEFormGetCollection, $_IEStatus_NoMatch

added. Any other suggestions?

Share this post


Link to post
Share on other sites
dedekpredek

horstj,

Try it with WinWait and _IELoadWait, it works for me

#include <IE.au3>
Run("C:\Program Files (x86)\Internet Explorer\iexplore.exe -new https://acc.rollernet.us/","")
$RollerHwnd = WinWait("Roller Network Control Center - Windows Internet Explorer","")
$rollerIE = _IEAttach($RollerHwnd,"HWND")
_IELoadWait($rollerIE)

DedekPredek

Share this post


Link to post
Share on other sites
horstj

Dedek, Sorry for my ignorance here, but would my code now look like this

#include <IE.au3>
Run("C:\Program Files (x86)\Internet Explorer\iexplore.exe -new https://acc.rollernet.us/","")
$RollerHwnd = WinWait("Roller Network Control Center - Windows Internet Explorer","")
$rollerIE = _IEAttach($RollerHwnd,"HWND")
_IELoadWait($rollerIE)
$rollerForm = _IEFormGetCollection($rollerIE)
;Logs into the Rollernet admin portal
$roller_username = _IEFormElementGetObjByName($rollerForm,"username")
$roller_password = _IEFormElementGetObjByName($rollerForm,"password")
_IEFormElementSetValue($roller_username,"Username")
_IEFormElementSetValue($roller_password,"Password")

I still cannot get it to fill in the username and password fields.

Edited by horstj

Share this post


Link to post
Share on other sites
water

As I said in post #2 you need to add some error checking. Which of the functions you call sets @error?


My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2018-12-03 - Version 1.4.11.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (2018-10-31 - Version 1.3.4.1) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
PowerPoint (2017-06-06 - Version 0.0.5.0) - Download - General Help & Support
Excel - Example Scripts - Wiki
Word - Wiki
 
Tutorials:

ADO - Wiki

 

Share this post


Link to post
Share on other sites
Exit

#include <IE.au3>
$oIE=_IECreate("https://acc.rollernet.us")
$oObj = _IEGetObjByName($oIE,"username")
_IEPropertySet($oObj,"innertext","MyUserId")
$oObj = _IEGetObjByName($oIE,"password")
_IEPropertySet($oObj,"innertext","MyPassword")
$oObj = _IEGetObjByName($oIE,"submit")
_IEAction($oObj,"click")
Exit


My UDFs, Abbrevs and Snippets
If you like my post, just click the like button :) 

Share this post


Link to post
Share on other sites
horstj

Wow... that was way easier than I was making it! Thanks Exit, that worked perfectly.

Share this post


Link to post
Share on other sites
water

As you can see from the help file:

_IEAttach: 7 ($_IEStatus_NoMatch) = No Match ==> The IE instance you try to attach to couldn't be found

_IELoadWait: 3 ($_IEStatus_InvalidDataType) = Invalid Data Type ==> Error caused by unsuccessfull _IEAttach


My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2018-12-03 - Version 1.4.11.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (2018-10-31 - Version 1.3.4.1) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
PowerPoint (2017-06-06 - Version 0.0.5.0) - Download - General Help & Support
Excel - Example Scripts - Wiki
Word - Wiki
 
Tutorials:

ADO - Wiki

 

Share this post


Link to post
Share on other sites
Nareshm
On 2/13/2013 at 7:59 PM, Exit said:

 

#include <IE.au3>
$oIE=_IECreate("https://acc.rollernet.us")
$oObj = _IEGetObjByName($oIE,"username")
_IEPropertySet($oObj,"innertext","MyUserId")
$oObj = _IEGetObjByName($oIE,"password")
_IEPropertySet($oObj,"innertext","MyPassword")
$oObj = _IEGetObjByName($oIE,"submit")
_IEAction($oObj,"click")
Exit

 

How to to fill this forum when webpage already opened ?

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

  • Similar Content

    • careca
      By careca
      Hi, i feel im close to getting it to work, but there must be something im missing that's probably easy for you experts.
      #include <IE.au3> #include <File.au3> #include <MsgBoxConstants.au3> $Visible = 1 Local $oIE $oIE = _IECreate("https://beemp3s.net/mp3-download.html", 0, $Visible, 1, 1) _IELoadWait($oIE) If $oIE <> @error Then ;_ArrayText() _QuerySite('Finding Hope - Without You') ;_IEQuit($oIE) ;Exit Else MsgBox(64 + 262144, 'Fail', 'Could not create a new window') EndIf ;============================================================================= Func _QuerySite($Name) Local $oIE_ObjectToSearch = _IEGetObjById($oIE, 'query') _IEDocInsertText($oIE_ObjectToSearch, $Name) Local $oIE_ObjectToClick = _IEGetObjById($oIE, "search-action") _IEAction($oIE_ObjectToClick, 'click') _IELoadWait($oIE, 2000) ;============================================================================= Local $oSubmitClick = _IEGetObjById($oIE, "col-md-12") _IEAction($oSubmitClick, "click") _IELoadWait($oIE, 2000) ;============================================================================= Local $oBtns = _IETagNameGetCollection($oIE, "div") For $oBtn In $oBtns If String($oBtn.classname) = "col-md-12" Then If String($oBtn.innertext) = "Download / Play" Then ConsoleWrite($oBtn.innertext & @CRLF) _IEAction($oBtn, 'click') EndIf EndIf Next ;============================================================================= ;Local $oElements = _IETagNameAllGetCollection($oIE) ;For $oElement In $oElements ; If $oElement.id Then MsgBox($MB_SYSTEMMODAL, "Element Info", "Tagname: " & $oElement.tagname & @CRLF & "id: " & $oElement.id & @CRLF & "innerText: " & $oElement.innerText) ;Next ;============================================================================= ;_IEQuit($oIE) ;Exit ;============================================================================= EndFunc ;==>_QuerySite ;============================================================================= Func _ArrayText() If FileExists('Titles.txt') Then Local $FO = FileOpen('Titles.txt') Local $R2A = FileReadToArray($FO) Local $iLineCount = @extended FileClose($FO) For $f = 0 To $iLineCount - 1 ConsoleWrite($f & ' - ' & $R2A[$f] & @CRLF) _QuerySite($R2A[$f]) Next Else MsgBox(64 + 262144, 'Fail', 'Could not find the file Titles.txt') EndIf EndFunc ;==>_ArrayText ;============================================================================= The idea is to get into this site, write into the search and click, which i did, but now the problem is clicking in any of the buttons in the results page, im looking for a way to click the first one, it always matches to what i want, so no need to fiddle around.
      Site
      Thanks for help in advance.

    • Seminko
      By Seminko
      Wrote a script that grabs all of the IP addresses from Netflix's IP log, checks the IPs and returns suspicious activity.
      Everything works as it should but only when _IECreate is set to visible. When visible is set to false, it fails to login for some reason.
      Any ideas what might cause it and/or how to circumvent that?
    • nooneclose
      By nooneclose
      I need to send a string of text to this popup and click on the ok button to save it.
      Here is the code I have so far:
      ;Start IE Sleep(7000) $oIE = _IECreate("http://www.google.com") Sleep(500) _IELoadWait($oIE) $hIE = _IEPropertyGet($oIE, "hwnd") ; Get Handle of the IE window Sleep(500) WinSetState($hIE, "", @SW_MAXIMIZE) ;Wait for a browser page load to complete Sleep(3000) _IENavigate($oIE, "https://properURL.com") Sleep(8000) _IELoadWait($oIE) ;Attach to a browser control embedded in another window $oIE = _IEAttach("https://"properURL.com", url") ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $oIE = ' & $oIE & @CRLF & '>Error code: ' & @error & ' Extended code: 0x' & Hex(@extended) & @CRLF) ;### Debug Console Sleep(2000) ;Get the title of the webpage ;Local $wTitle = _IEPropertyGet($oIE, "title") ;MsgBox($MB_SYSTEMMODAL, "Webpage title:", $wTitle) ;Clicks the new button Sleep(3000) _IEAction($nWorkOrderB, "focus") _IEAction($nWorkOrderB, "click") Sleep(5000) ;Store the Element names where the important data will be sent ;Store the long description button Local $wLongDButton = _IEGetObjById($oIE, "m65d795a4-img") ;Store the long Description field id Local $wComments = _IEGetObjById($oIE, "ma6499a9c-rte_iframe") ;Store the ok button id that is in the long description Local $wCommOk = _IEGetObjById($oIE, "m74031266-pb") ;******************************************************************************* ; Send the stored data to the proper field ;******************************************************************************* ;Click the long description button Sleep(300) _IEAction($wLongDButton, "focus") _IEAction($wLongDButton, "click") Sleep(300) ;Sends the Comments Sleep(500) _IEAction($wComments, "focus") _IEAction($wComments, "click") Sleep(500) _IEFormElementSetValue($wComments, "hello darkness my old friend") ;Click the ok button Sleep(500) _IEAction($wCommOk, "focus") _IEAction($wCommOk, "click") Sleep(500)  
      Here is the popup:

    • hemichallenger
      By hemichallenger
      Hello,
      If anyone can help, it would be greatly appreciated. The code is just an example and similar to the issue with an internal webpage. I'm trying to autofill than click the submit button. I get the same error running the script.
      _IEFormElementSetValue, $_IESTATUS_InvalidObjectType
      IEGetObjById, $_IESTATUS_NoMatch
      Is it possible to edit the <textarea></textarea>  field with AutoIt?  If anyone could assist me on how. Than I could have a better understanding and chance in figuring it out on my main script. Thank you
      #include <IE.au3> Local $oIE1 = _IECreate ("https://www.w3schools.com/tags/tryit.asp?filename=tryhtml_textarea") _IELoadWait($oIE1) local $oFormCollection = _IEFormGetCollection($oIE1,0) local $oid = _IEGetObjByid($oFormCollection, "iframeResult") _IEFormElementSetValue($oid, "test") sleep (2000) Local $oIE2 = _IECreate ("https://www.w3schools.com/html/tryit.asp?filename=tryhtml_scripts_intro") _IELoadWait($oIE2) $oForm2 = _IEFormGetCollection($oIE2,0) $oClickMe = _IEGetObjById($oForm2, "demo") _IEAction($oClickMe, "focus") _IEAction($oClickMe, "click")
    • yoschga
      By yoschga
      is there a possibility to let ie.au3 click into a form? i use on a project where i need to click into a form where items are loaded just writing it in or fill the form is no option
       

×