Jump to content
Ubermensch

[SOLVED] Issue in detecting IE element by name ($_IESTATUS_ClientDisconnected and $_IESTATUS_InvalidObjectType)

Recommended Posts

Ubermensch

Hello guys,

I am new here in our forum. I do have a little knowledge about AutoIt. I hope you could assist me. :)

I am currently working on a project. I want to try to create an automated time tracking tool.

This is how I want to function our time tracking tool.

  • Start time when the IE "get" button  is clicked.
  • End time when either "Next Step", "Save" or "Cancel" button is clicked.
  • All the values in the available fields will be stored in an Excel

I already have codes for the time tracking part, unfortunately, I cannot proceed since I am encountering an error for detecting the buttons in IE.

Here is my initial code for detecting the IE button.

#include <IE.au3>
#include <MsgBoxConstants.au3>

Local $oIE = _IECreate("C:\Users\april\Documents\Logo\JRB\AutoIt\AutoBOT\AWD10\sampleAWD10.html")

Local $oLastName = _IEFormElementGetObjByName($oIE, "Text4")
Local $oGetItem = _IEFormElementGetObjByName($oIE, "getitem")

_IELoadWait($oIE)
_IEAction($oGetItem, "click")


MsgBox($MB_SYSTEMMODAL, "Form Element Value", _IEFormElementGetValue($oGetItem))

Here is the console output.

>"C:\Program Files (x86)\AutoIt3\SciTE\..\AutoIt3.exe" "C:\Program Files (x86)\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.au3" /run /prod /ErrorStdOut /in "C:\Users\april\Documents\Logo\JRB\AutoIt\AutoBOT\AWD10\AWD10.au3" /UserParams    
+>23:22:20 Starting AutoIt3Wrapper v.17.224.935.0 SciTE v.3.7.3.0   Keyboard:00000409  OS:WIN_10/  CPU:X64 OS:X64  Environment(Language:0409)  CodePage:0  utf8.auto.check:4
+>         SciTEDir => C:\Program Files (x86)\AutoIt3\SciTE   UserDir => C:\Users\april\AppData\Local\AutoIt v3\SciTE\AutoIt3Wrapper   SCITE_USERHOME => C:\Users\april\AppData\Local\AutoIt v3\SciTE 
>Running AU3Check (3.3.14.2)  from:C:\Program Files (x86)\AutoIt3  input:C:\Users\april\Documents\Logo\JRB\AutoIt\AutoBOT\AWD10\AWD10.au3
+>23:22:20 AU3Check ended.rc:0
>Running:(3.3.14.2):C:\Program Files (x86)\AutoIt3\autoit3.exe "C:\Users\april\Documents\Logo\JRB\AutoIt\AutoBOT\AWD10\AWD10.au3"    
--> Press Ctrl+Alt+Break to Restart or Ctrl+Break to Stop
--> IE.au3 T3.0-2 Error from function _IELoadWait, $_IESTATUS_ClientDisconnected (-2147417848, Browser has been deleted prior to operation.)
--> IE.au3 T3.0-2 Error from function _IEFormElementGetObjByName, $_IESTATUS_InvalidObjectType
--> IE.au3 T3.0-2 Error from function _IEFormElementGetObjByName, $_IESTATUS_InvalidObjectType
--> IE.au3 T3.0-2 Error from function _IELoadWait, $_IESTATUS_InvalidObjectType ()
--> IE.au3 T3.0-2 Error from function _IEAction(click), $_IESTATUS_InvalidDataType
--> IE.au3 T3.0-2 Error from function _IEFormElementGetValue, $_IESTATUS_InvalidDataType
+>23:22:23 AutoIt3.exe ended.rc:0
+>23:22:23 AutoIt3Wrapper Finished.
>Exit code: 0    Time: 3.105

Here are the errors.

--> IE.au3 T3.0-2 Error from function _IELoadWait, $_IESTATUS_ClientDisconnected (-2147417848, Browser has been deleted prior to operation.)
--> IE.au3 T3.0-2 Error from function _IEFormElementGetObjByName, $_IESTATUS_InvalidObjectType
--> IE.au3 T3.0-2 Error from function _IEFormElementGetObjByName, $_IESTATUS_InvalidObjectType
--> IE.au3 T3.0-2 Error from function _IELoadWait, $_IESTATUS_InvalidObjectType ()
--> IE.au3 T3.0-2 Error from function _IEAction(click), $_IESTATUS_InvalidDataType
--> IE.au3 T3.0-2 Error from function _IEFormElementGetValue, $_IESTATUS_InvalidDataType

And here is my HTML code.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Language" content="en-us" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled 1</title>


<style type="text/css">
.style1 {
    text-align: left;
}
.style3 {
    font-family: Arial;
    font-size: 9pt;
    color: #CC00FF;
    margin: 0;
    padding: 0;

}
.style4 {
    font-family: Arial;
}
.style5 {
    font-size: 9pt;
}
.style6 {
    color: #CC00FF;
}
.style7 {
    background-color: #FF9999;
}
.style8 {
    font-family: Arial;
    font-size: 7pt;
    color: #CC00FF;
}
.style9 {
    font-size: 7pt;
}
.style10 {
    border: 2px solid #CC00FF;
}
.style11 {
    text-align: center;
}
.style12 {
    border: 1px solid #CC00FF;
}
.style13{
    clear: both;
    width: 525px;
    height: 45px;
    background: url(file:///C:/Users/april/Documents/JRB/AutoIt/AutoBOT/AWD10/lockedby.png) no-repeat;
    margin: 0;
    padding: 0;
    list-style: none;

}
.style14{ 
    float: right; 
    margin: 0px 0px 0 0; 
    width: 290px; 
    height: 25px;  
}

.style15{ 
    float: left; 
    margin: 0px 0px 0 0; 
    width: 290px; 
    height: 25px;  
}


.style16 {
    font-family: Arial;
    font-size: 2.5pt;
    color: #CC00FF;
    margin: 0;
    padding: 0;
}
.style17 {
    font-family: Arial;
    font-size: 7pt;
    color: #CC00FF;
    margin: 0;
    padding: 0;
}

.style18 {
    border-color: transparent;
    border: none;
    background-color:transparent;
    font-family: Arial;
    font-size: 8pt;
    

}


</style>
</head>

<body>
<input type="button" name="getitem" value="get" onclick="
    document.getElementById('filename').value = 'Life - ' + Random() + ' INVESTTAUTH - Process - Updateable - Assigned To: Jejeje - Create Date/Time: 2017-05-26-11.12.45.109044 - POL: 046054173 - TYPE: POLICY - SLA: 06/05/2017 ADMIN SYS: VP -PLC: 14'
    document.getElementById('businessarea').value = 'BusinessArea' + Random()
    document.getElementById('worktype').value = 'Worktype' + Random()
"/><br/>
<table style="width: 25%" align="center" class="style10">
    <tr>
        <td style="width: 525px">

<img src="C:\Users\april\Documents\Logo\JRB\AutoIt\AutoBOT\AWD10\openitems.png" width="525px" height="28" /><br />
<div class="style13" style="height: 28px; width: 514px;">
     <div class="style14" style="height: 11px; width: 110px;">
        
        <label id="username"><span class="style16">&nbsp;</span><span class="style3"><br />
        </span><span class="style17">
        <script type="text/javascript">
                    var WinNetwork = new ActiveXObject("WScript.Network");
                    document.write(WinNetwork.UserName);
        </script>
    </span>
    </label>                
    </div>
    
     <div class="style14" style="height: 11px; width: 52px;">
        
        <label id="Label4"><span class="style16">&nbsp;</span><span class="style3"><br />
        </span><span class="style17">Locked by </span>
        </label>                
    </div>

        <div class="style15" style="height: 11px; width: 351px;">
        
                
        
        
                <form method="post" id="openfile" class="style15" style="width: 341px">
        
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        <input name="file" id="filename" class="style18" type="text" style="width: 200px; height: 10px" /></div>
        </form>

</div>
<label id="Label3"><span class="style3"><br/>
&nbsp; </span><span class="style8"><strong>&nbsp;LTC Claims Indexing Form</strong></span><span class="style3"><br />
<br/>
</span></label>
<form method="post" id="formawddata" style="width: 495px">
            <fieldset name="Group1" style="width: 495px" class="style12">
            <legend class="style8"><strong>AWD Data</strong></legend>
            <table style="width: 100%">
                <tr>
                    <td style="width: 86px" class="style3">&nbsp;&nbsp;&nbsp;&nbsp;
                    <span class="style9">Business Area:</span></td>
                    <td style="width: 144px" class="style8"><input name="Text4" id="businessarea" class="style18" type="text" /></td>
                    <td style="width: 45px" class="style8">Worktype:</td>
                    <td class="style8"><input name="Text5" id="worktype" class="style18" type="text" /></td>
                </tr>
            </table>
            </fieldset><br />
</form>

<form method="post" id="doc" style="width: 495px">
    <fieldset name="Group1" style="width: 495px; height
    : 55px;" class="style12">
    <legend class="style8"><strong>Document Data</strong></legend>
    &nbsp;&nbsp;&nbsp; <span class="style8">Document Type</span><br />
    &nbsp;&nbsp;&nbsp; <span class="style4"><span class="style9"> <select name="Select1" id="documenttype" style="width: 363px">
  <option></option>
  <option value="Doc1">Doc1</option>
  <option value="Doc2">Doc2</option>
  <option value="Doc3">Doc3</option>
  <option value="Doc4">Doc4</option>
  <option value="Doc5">Doc5</option>
  <option value="Doc6">Doc6</option>
    <option value="Doc7">Doc7</option>
  <option value="Doc8">Doc8</option>
  <option value="Doc9">Doc9</option>
    <option value="Doc10">Doc10</option>
  <option value="Doc11">Doc11</option>
  <option value="Doc12">Doc12</option>
  <option value="Doc13">Doc13</option>
  <option value="Doc14">Doc14</option>
    <option value="Doc15">Doc15</option>
  <option value="Doc16">Doc16</option>
  <option value="Doc17">Doc17</option>
    <option value="Doc18">Doc18</option>
  <option value="Doc19">Doc19</option>
  <option value="Doc20">Doc20</option>


    </select></span></span></fieldset><br />
</form>

<form method="post" id="myForm"style="width: 495px; height: 103px;">
    <fieldset name="Group1" style="width: 495px; height: 95px;" class="style12">
    <legend class="style8"><strong>Policy Data</strong></legend>
    &nbsp;&nbsp;&nbsp; <span class="style8">Claim Number&nbsp;</span><span class="style3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="style8">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    Policy Number/LTC ID</span><br />
    &nbsp;&nbsp;&nbsp; 
    <input name="Text1" id="claimnumber" type="text" style="width: 153px" class="style7" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    <input name="Text2" id="policynumber"type="text" style="width: 152px" class="style7" /><br />
    &nbsp;&nbsp;&nbsp; <span class="style8">Company Code</span><br />
    &nbsp;&nbsp;&nbsp; <span class="style7">
    <span class="style4"><span class="style9">
    <select name="Select2" id="companycode" style="width: 157px">
    <option></option>
  <option value="CC00001">CC00001</option>
  <option value="CC00002">CC00002</option>
  <option value="CC00003">CC00003</option>
  <option value="CC00004">CC00004</option>
  <option value="CC00005">CC00005</option>
    <option value="CC00006">CC00006</option>
  <option value="CC00007">CC00007</option>
  <option value="CC00008">CC00008</option>
    <option value="CC00009">CC00009</option>
  <option value="CC000010">CC000011</option>
  <option value="CC000011">CC000011</option>
  <option value="CC000012">CC000012</option>
  <option value="CC000013">CC000013</option>
    <option value="CC000014">CC000014</option>
  <option value="CC000015">CC000015</option>
  <option value="CC000016">CC000016</option>
    <option value="CC000017">CC000017</option>
  <option value="CC000018">CC000018</option>
  <option value="CC000019">CC000019</option>
    <option value="CC000020">Doc20</option>

    </select></span></span></span></fieldset></form><table style="width: 95%; height: 114px;">
    <tr>
        <td style="height: 23px; width: 212px;" class="style1">
    
<form method="post" style="width: 173px" >
    <fieldset name="Group1" style="width: 175px; height: 64px;" class="style12">
    <legend class="style8"><strong>Routing</strong></legend>
    &nbsp;&nbsp;&nbsp; 
    <span class="style4"><span class="style6"> 
    <span class="style5"><span class="style9"> 
    <input name="Radio1" type="radio" checked="checked" value="1" /></span></span><span class="style9">Indexed<br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="style5"><span class="style9"> <input name="Radio1" type="radio" value="2" /> 
    Reroute</span></span></span></span></fieldset></form></td>
        <td style="height: 23px">
                <span class="style8">AWD Comments</span>
        <form method="post" id="awdcomments" style="width: 278px; height: 47px">
            <textarea name="TextArea1" style="width: 273px; height: 59px" cols="20" class="style7"></textarea></form><br />
        </td>
    </tr>
</table>

<br />

    <div class="style11">

  <input name="button1" type="button" onclick="myFunction()" value="Next Step"/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;
    <input name="button2" type="button" onclick="myFunction()" value="Save" style="width: 91px"/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    <input name="button3" type="button" onclick="myFunction()" value="Cancel" style="width: 94px"/>
<script>
function myFunction() {
        document.getElementById("doc").reset();
        document.getElementById("myForm").reset();
        document.getElementById("awdcomments").reset();
        document.getElementById("formawddata").reset();
        document.getElementById("openfile").reset();
        document.getElementById("businessarea").reset();
        document.getElementById("worktype").reset();
        document.getElementById("documenttype").reset();
        document.getElementById("policynumber").reset();
        document.getElementById("companycode").reset();
        document.getElementById("claimnumber").reset();
        document.getElementById("Label4").reset();

    
}
</script>

<script type="text/javascript">
        function Random() {
            return Math.floor(Math.random() * 10000000);
        }


    </script>
    <br />
    <br />
</div>
</td>
</tr>

</table>


<p>
        
                
        &nbsp;</p>
&nbsp;

</body>

</html>

I hope you could assist me. Thank you in advance! ^_^

Edited by Ubermensch

Share this post


Link to post
Share on other sites
Danp2

You can resolve the initial error by setting the $iWait parameter to 0.

Local $oIE = _IECreate("C:\Users\april\Documents\Logo\JRB\AutoIt\AutoBOT\AWD10\sampleAWD10.html", 0, 1, 0)

The next issue is that you are calling _IEFormElementGetObjByName with the incorrect first parameter. Instead of passing a reference to the IE object, you need to pass the appropriate form object.

Also, you probably need to use _IEGetObjByName to get the reference to the "getitem" button since it doesn't appear to reside within a form.

Share this post


Link to post
Share on other sites
Ubermensch
13 hours ago, Danp2 said:

You can resolve the initial error by setting the $iWait parameter to 0.

Local $oIE = _IECreate("C:\Users\april\Documents\Logo\JRB\AutoIt\AutoBOT\AWD10\sampleAWD10.html", 0, 1, 0)

The next issue is that you are calling _IEFormElementGetObjByName with the incorrect first parameter. Instead of passing a reference to the IE object, you need to pass the appropriate form object.

Also, you probably need to use _IEGetObjByName to get the reference to the "getitem" button since it doesn't appear to reside within a form.

Hello @Danp2,

I have tried your code and it already solve the "Disconnected" error.

But unfortunately, the object still not detected.

Here is the new code I have used.

#include <IE.au3>
#include <MsgBoxConstants.au3>

Local $oIE = _IECreate("C:\Users\april\Documents\Logo\JRB\AutoIt\AutoBOT\AWD10\sampleAWD10.html",0,1,0)

Local $oLastName = _IEGetObjByName($oIE, "Text4")
Local $oGetItem = _IEGetObjByName($oIE, "getitem")

_IELoadWait($oIE)
_IEAction($oGetItem, "click")

Here is the console output.

>"C:\Program Files (x86)\AutoIt3\SciTE\..\AutoIt3.exe" "C:\Program Files (x86)\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.au3" /run /prod /ErrorStdOut /in "C:\Users\april\Documents\Logo\JRB\AutoIt\AutoBOT\AWD10\AWD10.au3" /UserParams    
+>21:15:19 Starting AutoIt3Wrapper v.17.224.935.0 SciTE v.3.7.3.0   Keyboard:00000409  OS:WIN_10/  CPU:X64 OS:X64  Environment(Language:0409)  CodePage:0  utf8.auto.check:4
+>         SciTEDir => C:\Program Files (x86)\AutoIt3\SciTE   UserDir => C:\Users\april\AppData\Local\AutoIt v3\SciTE\AutoIt3Wrapper   SCITE_USERHOME => C:\Users\april\AppData\Local\AutoIt v3\SciTE 
>Running AU3Check (3.3.14.2)  from:C:\Program Files (x86)\AutoIt3  input:C:\Users\april\Documents\Logo\JRB\AutoIt\AutoBOT\AWD10\AWD10.au3
+>21:15:19 AU3Check ended.rc:0
>Running:(3.3.14.2):C:\Program Files (x86)\AutoIt3\autoit3.exe "C:\Users\april\Documents\Logo\JRB\AutoIt\AutoBOT\AWD10\AWD10.au3"    
--> Press Ctrl+Alt+Break to Restart or Ctrl+Break to Stop
"C:\Program Files (x86)\AutoIt3\Include\IE.au3" (1875) : ==> The requested action with this object has failed.:
If IsObj($oObject.document.GetElementsByName($sName).item($iIndex)) Then
If IsObj($oObject^ ERROR
->21:15:20 AutoIt3.exe ended.rc:1
+>21:15:20 AutoIt3Wrapper Finished.
>Exit code: 1    Time: 2.099

Here are the errors.

If IsObj($oObject.document.GetElementsByName($sName).item($iIndex)) Then
If IsObj($oObject^ ERROR

Share this post


Link to post
Share on other sites
Danp2

Looks like you'll need to use _IEAttach to get a valid reference to the created IE instance. Here's one way to do it --

#include <IE.au3>
#include <MsgBoxConstants.au3>

_IECreate("C:\Users\april\Documents\Logo\JRB\AutoIt\AutoBOT\AWD10\sampleAWD10.html",0,1,0)
Local $oIE = _IEAttach("", "instance", 1)
_IELoadWait($oIE)

Local $oLastName = _IEGetObjByName($oIE, "Text4")
Local $oGetItem = _IEGetObjByName($oIE, "getitem")

_IEAction($oGetItem, "click")

MsgBox($MB_SYSTEMMODAL, "Form Element Value", _IEFormElementGetValue($oGetItem))

 

  • Like 1

Share this post


Link to post
Share on other sites
Ubermensch
35 minutes ago, Danp2 said:

Looks like you'll need to use _IEAttach to get a valid reference to the created IE instance. Here's one way to do it --

#include <IE.au3>
#include <MsgBoxConstants.au3>

_IECreate("C:\Users\april\Documents\Logo\JRB\AutoIt\AutoBOT\AWD10\sampleAWD10.html",0,1,0)
Local $oIE = _IEAttach("", "instance", 1)
_IELoadWait($oIE)

Local $oLastName = _IEGetObjByName($oIE, "Text4")
Local $oGetItem = _IEGetObjByName($oIE, "getitem")

_IEAction($oGetItem, "click")

MsgBox($MB_SYSTEMMODAL, "Form Element Value", _IEFormElementGetValue($oGetItem))

 

Thanks Danp2.

I have tried the updated code and unfortunately, still not getting a match.

I also tried to tweak it, but it is still not working.

Here is the console output.

>"C:\Program Files (x86)\AutoIt3\SciTE\..\AutoIt3.exe" "C:\Program Files (x86)\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.au3" /run /prod /ErrorStdOut /in "C:\Users\april\Documents\Logo\JRB\AutoIt\AutoBOT\AWD10\AWD10.1.au3" /UserParams    
+>22:59:31 Starting AutoIt3Wrapper v.17.224.935.0 SciTE v.3.7.3.0   Keyboard:00000409  OS:WIN_10/  CPU:X64 OS:X64  Environment(Language:0409)  CodePage:0  utf8.auto.check:4
+>         SciTEDir => C:\Program Files (x86)\AutoIt3\SciTE   UserDir => C:\Users\april\AppData\Local\AutoIt v3\SciTE\AutoIt3Wrapper   SCITE_USERHOME => C:\Users\april\AppData\Local\AutoIt v3\SciTE 
>Running AU3Check (3.3.14.2)  from:C:\Program Files (x86)\AutoIt3  input:C:\Users\april\Documents\Logo\JRB\AutoIt\AutoBOT\AWD10\AWD10.1.au3
+>22:59:31 AU3Check ended.rc:0
>Running:(3.3.14.2):C:\Program Files (x86)\AutoIt3\autoit3.exe "C:\Users\april\Documents\Logo\JRB\AutoIt\AutoBOT\AWD10\AWD10.1.au3"    
--> Press Ctrl+Alt+Break to Restart or Ctrl+Break to Stop
--> IE.au3 T3.0-2 Warning from function _IEGetObjByName, $_IESTATUS_NoMatch (Name: Text4, Index: 0)
--> IE.au3 T3.0-2 Warning from function _IEGetObjByName, $_IESTATUS_NoMatch (Name: getitem, Index: 0)
--> IE.au3 T3.0-2 Error from function _IEAction(click), $_IESTATUS_InvalidDataType
--> IE.au3 T3.0-2 Error from function _IEFormElementGetValue, $_IESTATUS_InvalidDataType
+>22:59:33 AutoIt3.exe ended.rc:0
+>22:59:33 AutoIt3Wrapper Finished.
>Exit code: 0    Time: 2.557

By the way, does #RequireAdmin connected to the issue?

Share this post


Link to post
Share on other sites
Danp2

It worked for me when no other instance of IE was loaded. If you have other active tabs, then you will need to adjust the _IEAttach or come up with another way to get the reference to the correct IE instance.

  • Like 1

Share this post


Link to post
Share on other sites
Ubermensch
16 minutes ago, Danp2 said:

It worked for me when no other instance of IE was loaded. If you have other active tabs, then you will need to adjust the _IEAttach or come up with another way to get the reference to the correct IE instance.

I have given another try the code and it is already working now. ;)

It's kinda weird since it is not working earlier. :sweating:

Thanks a lot with the help! Your the best! B)

Can I contact you again if I have other questions?!? :lol:

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

    • 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?
    • MakzNovice
      By MakzNovice
      Hello Experts,
      I am working on modifying table data of a browser currently in IE (soon in FF)
      My sequence of operations:
      1. Activate Browser
      2. Get Browser table
      3. Modify data  in table
      4. Suppress any warning/error message from webpage
      5. Activate the Webpage again 
      6. Send {F11} key sequence twice to achieve some update without Updating form ( {F5})
       
      My problem is at Step 5, as it activates the wrong window ( last used application rather than my browser window)
      My code snippet for it as follows
      $bFoundWindow = False Local $aList = WinList("[REGEXPTITLE:(?i)(.*Internet Explorer.*)]") Local $hWND = 0 For $i = 1 To $aList[0][0] If False = $bFoundWindow And $aList[$i][0] <> "" And BitAND(WinGetState($aList[$i][1]), 1) Then WinActivate($aList[$i][1]) ; 1. Activate Browser window WinSetState ( $aList[$i][1], "", @SW_MAXIMIZE) $hWND = $aList[$i][1] $objEditIE = _IEAttach ($aList[$i][1], "hwnd") $oTitles = _IETagNameGetCollection($objEditIE, "TITLE") For $oTitle In $oTitles $sTitle = $oTitle.innerText If $sTitle = $searchString Then MsgBox(0,"APPLICATION Found", "Got Edit List Window", 1) $bFoundWindow = True ExitLoop EndIf Next EndIf Next If False = $bFoundWindow Then MsgBox(0,"Error","Please launch Edit window for updating values in Browser prior to script execution",10) Exit EndIf ; MY CODE HERE TO MODIFY TABLE ; 2. Get Browser table ; 3. Modify data  in table ; Check if message from webpage pop-up window exists if so click ok on it Local $nCounter = 0 Local $nMaxCounter = 5 while 1 If WinExists("Message from webpage","") Then ControlClick("Message from webpage","","Button1","primary",1) ;4. Suppress any warning/error message from webpage Else $nCounter = $nCounter + 1 Sleep(100) ;MsgBox(0,"Counter", $nCounter, 1) If $nCounter = $nMaxCounter Then ExitLoop EndIf WEnd ;5. Activate the Webpage again  WinActivate($hWND) ; have already tried WinActivate($aList[$i][1]) but no success ;6. Send {F11} key sequence twice to achieve some update without Updating form ( {F5}) Send("{F11}") WinActivate($hWND) ;WinActivate($aList[$i][1]) Sleep(100) Send("{F11}") Any support will be highly appreciated
    • MakzNovice
      By MakzNovice
      Hello Experts,
      I am working on custom application details of which I am unable to share.
      But here is statement of my problem, I have two IE windows one window with Title "Parent " and other with "TableEdit", but for some reason when I get WinList they are shown as 2 processes each. ( see attached image)
      Since my most important motive is to modify table data in 'TableEdit' I try to access the table in it
      My code snippet is 
      ***********************************************************************************************
      $searchString = "TableEdit"
      Local $aList = WinList("[REGEXPTITLE:(?i)(.*Internet Explorer.*)]")
      _ArrayDisplay($aList)
      For $i = 1 To $aList[0][0]
          If $aList[$i][0] <> "" And BitAND(WinGetState($aList[$i][1]), 2) Then
              ;MsgBox($MB_SYSTEMMODAL, "", "Title: " & $aList[$i][0] & @CRLF & "Handle: " & $aList[$i][1])
              If 0 <> StringInStr($aList[$i][0],"TableEdit") Then
                  $objEditIE = _IEAttach ($aList[$i][1])
                  ExitLoop
              EndIf
          EndIf
      Next
      WinActivate($objEditIE)
      $oPageContentListFrame = _IEFrameGetObjByName($objEditIE, "iframe_1")
      $iNumFrames = @extended
      MsgBox(0,"Got pagecontent",@error) ; returns 3, indicating invalid data type
      MsgBox(0,"Number of Frame",$iNumFrames) ; returns 1, expected value is 1 
      ***********************************************************************************************
      and If I do code as below the return value is different
      $searchString = "TableEdit"
       $objEditIE = _IEAttach ($searchString, "title")
      WinActivate($objEditIE)
      $oPageContentListFrame = _IEFrameGetObjByName($objEditIE, "iframe_1")
      $iNumFrames = @extended
      MsgBox(0,"Got pagecontent",@error) ; returns 0
      MsgBox(0,"Number of Frame",$iNumFrames) ; returns 0. expected value is 1
      ***********************************************************************************************
      What is wrong with my code? 
      Why do I see two process each for IE for each window?
       
      WinListImage.bmp
    • Tippex
      By Tippex
      I have a problem trying to use _IEAttach to recover control after a Windows Explorer reset (e.g. on Windows 7), since all the 
      InternetExplorer.Application objects appear to be destroyed by this event. An example of this is when a PC has some kind of fault causing a pop-up error message "Windows Explorer has stopped working". I can simulate this event by using Windows Task Manager to end the Explorer.exe process then to file, new task (run...) Explorer.exe
      After this event, _IEAttach gives an @error of: 
      7 ($_IEStatus_NoMatch) - No Match
      However, using WinList() followed by WinGetText() I can recover the URL for an IE session that has lost its 
      InternetExplorer.Application object which could be used to _IECreate a new session (the $iTryAttach fails) and WinKill() the original session but the result is a if a refresh had been done (any form entries are lost) . Unfortunately form entries do not appear as text or hidden text to Windows so I'm looking for the best way to read the contents of an Internet Explorer screen (even if just text without structure). 
      When there is no InternetExplorer.Application object (because of some Windows fault) but still with an Internet Explorer session running, I tried to read its contents by a "Select All" & "Copy to Clipboard" but its form entries are blanked and combo boxes choices are all displayed with no way of finding out which ones were selected.
      Local $ClipBoardSave = _ClipBoard_GetData() ;not ClipGet() which is text only ClipPut("") ;Clear User's Clipboard Local $sText = "" Local $hWnd = WinActivate("Window Title", "") If IsHWnd($hWnd) Then Local $bStatusCtrlSend = ControlSend("Window Title", "", "", "^a^c") If $bStatusCtrlSend Then Local $bStatusCtrlClick = ControlClick("Window Title", "", "") If $bStatusCtrlClick Then $sText = ClipGet() _ClipBoard_SetData($ClipBoardSave) ;not ClipPut($ClipBoardSave) which is text only  
      Is  there a solution to this please?
    • Tippex
      By Tippex
      I'm having a problem with _IEBodyReadText() which is a function from the IE.au3 UDF include.
      My problem is that randomly it will crash my script with:
      Return SetError($_IESTATUS_Success, 0, $oObject.document.body.innerText) Return SetError($_IESTATUS_Success, 0, $oObject.document.body^ ERROR I don't know why the error isn't caught by __IEErrorHandlerRegister but looking at this function, I can see that there is a check done by IsObj($oObject) to ensure that the object "$oObject" exists but no check that it contains the property "innerText"
      ; #FUNCTION# ==================================================================================================================== ; Author ........: Dale Hohm ; =============================================================================================================================== Func _IEBodyReadText(ByRef $oObject) If Not IsObj($oObject) Then __IEConsoleWriteError("Error", "_IEBodyReadText", "$_IESTATUS_InvalidDataType") Return SetError($_IESTATUS_InvalidDataType, 1, 0) EndIf If Not __IEIsObjType($oObject, "browserdom") Then __IEConsoleWriteError("Error", "_IEBodyReadText", "$_IESTATUS_InvalidObjectType", "Expected document element") Return SetError($_IESTATUS_InvalidObjectType, 1, 0) EndIf ; Return SetError($_IESTATUS_Success, 0, $oObject.document.body.innerText) EndFunc ;==>_IEBodyReadText I'm struggling to find out how to test if "$oObject.document.body.innerText" exists before allowing the following Return statement to reference it with the assumption that it does exist (crashing my script when it doesn't).
      Any ideas please?
×