Jump to content
BobSherman

IE.au3 Error When Submitting Simple Form

Recommended Posts

BobSherman

I am attempting to enter the logon ID and password into the form below and submit it.

But, I am experiencing an error in IE.au3 whether I use _IEAction to submit a click (which does submit the form) or _IEFormSubmit (which does not submit the form before it errors out).

The form seems rather simple:

<form method="post" action="logon_submit.php">
                       <input type="hidden" name="visit" value="sRhvMItOu1hNV_y9t4iB7xhns2UJ0pUIYmpJyy3CivjvGYv0ST1QHY40QP9H5UPTqonadminkin_65dvtXxSIXDPwyFFI6WPVQFmgFtba8vW3OH">
<table width="100%" border="0" cellpadding="0" align="center" cellspacing="0">
                    <tr>
                      <td valign=top><table width="100%" border="0" cellpadding="4" cellspacing="1">
                          <tr>
                            <td align="Right"><b>Username: <span class="style1">*</span></b></td>
                            <td width="80%"><input type="TEXT" name="user" style="width: 90%;">
                            </td>
                          </tr>
                          <tr>
                            <td align="Right"><b>Password: <span class="style1">*</span></b></td>
                            <td><input type="password" name="pass" style="width: 90%;">
                            </td>
                          </tr>
                          <tr>
                            <td align="Right">&nbsp;</td>
                            <td><input type="submit" name="Submit" value="Submit Form">
                            </td>
                          </tr>
                          <tr>
                            <td align="Right">&nbsp;</td>
                            <td><a href="resetpw.php?visit=sRhvMItOu1hNV_y9t4iB7xhns2UJ0pUIYmpJyy3CivjvGYv0ST1QHY40QP9H5UPTqonadminkin_65dvtXxSIXDPwyFFI6WPVQFmgFtba8vW3OH" class=white>Forgot your password ?</a></td>
                          </tr>
                        </table>
                          <p>&nbsp;</p>
                      </td>
                    </tr>
                  </table>
                </form>

 

My function to perform the logon is:

 

Func StartUp()
   _IELinkClickByText ( $oIE, "Log On" )
   Sleep(2000)
   Local $oForm = _IEFormGetCollection($oIE)
   Local $iNumberOfForms = @extended

   For $iForm = 0 To $iNumberOfForms - 1
     $oForm = _IEFormGetCollection($oIE, $iForm)

     Local $oQuery = _IEFormElementGetCollection($oForm)

     Local $iNumberOfFormElements = @extended

     For $iElement = 0 to $iNumberOfFormElements - 1
         Local $oFormElement = _IEFormElementGetCollection($oForm, $iElement )
         If $oFormElement.name = 'user' Then
            _IEFormElementSetValue ( $oformElement, "xxxxx", 0)
         elseif $oFormElement.name = "pass" Then
            _IEFormElementSetValue ( $oFormElement, "yyyyy", 0)
            ; Sleep for 2 seconds.
            Sleep(2000)
            Local $oSubmit = _IEGetObjByName($oIE, "Submit")
            _IEAction($oSubmit, "click")
            Sleep(3000)
         EndIf
      Next
   Next
EndFunc

 


After the submission of the form completes and goes to the next page I'm getting the following error as a popup from AutoIt:

 


Line 970 (File "D\Program Files (x86)\AutoIt3\Include\IE.au3"):
Case $iIndex > -1 And $iIndex < $oObject.elements.length
Case $iIndex > -1 And $iIndex < $oObject^ ERROR
Error: The requested actions with this object has failed.


It's hard to imagine that such a simple form is causing so many problems.

Any help would be appreciated.

 

 

 

Share this post


Link to post
Share on other sites
Danp2

That line number is located inside the function _IEFormElementGetCollection. Your code calls this function multiple times. Have you determined which call is generating the error?

I suspect it's the initial one, but can't tell from your post. Suggest that you add some error checking for each call to the IE functions.

Share this post


Link to post
Share on other sites
BobSherman

Thanks Danp2.

It was simply a dumb mistake.

I found that i submitted the form after filling in the 3'rd input element. This moved on to the next page.

But, the loop continued to examine the 4'th element which no longer existed.This caused the error.

So, I added an "Exitloop 2" statement after the final sleep which worked to get out of the two For loops.

Thanks again.

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

    • ademon
      By ademon
      Hi. I can not automate the click at a button, because there are three of them exactly in the source page.
      Imagine you have this html source code:
      <div class="submit"><span class="button btnDefault"><span><input type="submit" value="Search" /></span></span></div> How could I select just one element, and do click as an action on it?
      $sElement = _WD_FindElement($sSession, $_WD_LOCATOR_ByXPath, "//input[@type='submit'][@value='Search']") _WD_ElementAction($sSession, $sElement, 'click') That just do not work.
      Any ideas?

    • xiantez
      By xiantez
      This script used to work on an older version of AutoIT. Currently I am running AutoIT v3.3.14.5 and it's failing.
      Func PublicIP() ;Post public facing IP address Local $url = 'https://www.google.com/search?client=opera&q=what+is+my+ip&sourceid=opera&ie=UTF-8&oe=UTF-8' Local $getIPaddress = BinaryToString(InetRead($url)) Local $sStart = 'clamp:2">' Local $sEnd = '</div>' Local $ipaddress = _StringBetween($getIPaddress, $sStart, $sEnd For $i In $ipaddress MsgBox(0, 'External IP', "Your public IP address is " & $i) Next EndFunc ;==>PublicIP The console output shows:
      "C:\Users\user\Documents\AutoIT\Scripts\WSI Tools.au3" (197) : ==> Variable must be of type "Object".: For $i In $ipaddress For $i In $ipaddress^ ERROR ->14:12:16 AutoIt3.exe ended.rc:1 +>14:12:16 AutoIt3Wrapper Finished. >Exit code: 1 Time: 9.811
    • RamaKrishna9
      By RamaKrishna9
      What are the minimum system requirements(like Windows OS version, IE browser version, etc,.) for IE.au3(3.3.14.2) to work properly?
    • Xandy
      By Xandy
      I'm listing the error message strings, and roughly matching the error code
      Is this how to do error reporting?  Is there a more simple way I don't know about?
      I realise I might not need to trap @error inside $error.  I like it this way b/c I have no fear of overwriting @error now; I don't even use it.
      Func Send_Connect($address, $port)     $socket = TCPConnect($address, $port)     $error = @error     If $error <> 0 Then         Local $aError[4] = ["-2 not connected.", _                             "1 IPAddr is incorrect.", _                             "2 port is incorrect."]         $aError[3] = "10060 Connection timed out."         If $error < 0 Then $error = 0         If $error > 2 Then $error = 3         MsgBox(0, "TCP Connect Error", $aError[$error], 0)         $socket = 0     EndIf     Return $socket EndFunc
    • Spartan117
      By Spartan117
      Hi everyone,
      I am wondering if is there any autoit function that make the program ignore errors and move on and resume correct lines?
      Thank you
×