Jump to content
Sign in to follow this  
complexjunk

Latest _IEFrameGetObjByName now returns $_IEStatus_NoMatch

Recommended Posts

complexjunk

I'm struggling to get my code working in the latest IE.au3 (3.3.9++) that came with the newest stable version of AutoIt (v3.3.10.2). There's an old, but perfect example DaleHohm >posted that illustrates the problem:

 

...true, iframe is not a normal frame, but it is included in the frames collection and can be accessed with this function. Here is an example:

#include <ie.au3>
; Create browser window with an iframe
$oIE = _IECreate()
Sleep (3000); sleep needed with IE.au3 T1.4 and below
_IEBodyWriteHTML($oIE, "<h1>Test</H1><p><iframe src='about:blank' id ='foo'></iframe>")

; Get reference to iframe named foo and write to it
$oFrame = _IEFrameGetObjByName($oIE, "foo")
_IEBodyWriteHTML($oFrame, "hi"); string appears in frame

Dale

 

From the debug console:

IE.au3 T3.0-1 Warning from function _IEFrameGetObjByName, $_IEStatus_NoMatch (No frames matching name)

When I reverted to an older IE.au3 (3.3.7.20++), everything worked as expected.

Searched the forums, looked at the update history in the IE.au3 header, nothing's jumping out at me that I need to do differently to get this to work with the latest Include. Any ideas?

Edit: I tried to use the latest beta version's IE.au3 (3.3.10.0) and noticed that debugging was turned on, this is the result:

@@ Debug(3026) : $Name_IEIsObjType = IWebBrowser2
>Error code: 0    $ScriptLineNumber = 266
@@ Debug(3026) : $Name_IEIsObjType = IWebBrowser2
>Error code: 0    $ScriptLineNumber = 3054
@@ Debug(3026) : $Name_IEIsObjType = IWebBrowser2
>Error code: 0    $ScriptLineNumber = 3024
@@ Debug(3026) : $Name_IEIsObjType = IWebBrowser2
>Error code: 0    $ScriptLineNumber = 441
@@ Debug(3026) : $Name_IEIsObjType = IWebBrowser2
>Error code: 0    $ScriptLineNumber = 3039
@@ Debug(3026) : $Name_IEIsObjType = IWebBrowser2
>Error code: 0    $ScriptLineNumber = 3054
@@ Debug(3026) : $Name_IEIsObjType = IWebBrowser2
>Error code: 0    $ScriptLineNumber = 3024
@@ Debug(3026) : $Name_IEIsObjType = IWebBrowser2
>Error code: 0    $ScriptLineNumber = 459
@@ Debug(3026) : $Name_IEIsObjType = HTMLDocument
>Error code: 0    $ScriptLineNumber = 1935
@@ Debug(3026) : $Name_IEIsObjType = HTMLDocument
>Error code: 0    $ScriptLineNumber = 3054
@@ Debug(3026) : $Name_IEIsObjType = HTMLDocument
>Error code: 0    $ScriptLineNumber = 3024
@@ Debug(3026) : $Name_IEIsObjType = IWebBrowser2
>Error code: 0    $ScriptLineNumber = 1607
@@ Debug(3026) : $Name_IEIsObjType = IWebBrowser2
>Error code: 0    $ScriptLineNumber = 3039
@@ Debug(3026) : $Name_IEIsObjType = IWebBrowser2
>Error code: 0    $ScriptLineNumber = 3054
@@ Debug(3026) : $Name_IEIsObjType = IWebBrowser2
>Error code: 0    $ScriptLineNumber = 3024
@@ Debug(3026) : $Name_IEIsObjType = HTMLDocument
>Error code: 0    $ScriptLineNumber = 441
@@ Debug(3026) : $Name_IEIsObjType = HTMLDocument
>Error code: 0    $ScriptLineNumber = 3039
@@ Debug(3026) : $Name_IEIsObjType = HTMLDocument
>Error code: 0    $ScriptLineNumber = 3054
@@ Debug(3026) : $Name_IEIsObjType = HTMLDocument
>Error code: 0    $ScriptLineNumber = 3024
@@ Debug(3026) : $Name_IEIsObjType = HTMLDocument
>Error code: 0    $ScriptLineNumber = 3041
@@ Debug(3026) : $Name_IEIsObjType = HTMLDocument
>Error code: 0    $ScriptLineNumber = 459
@@ Debug(3026) : $Name_IEIsObjType = HTMLDocument
>Error code: 0    $ScriptLineNumber = 490
@@ Debug(3026) : $Name_IEIsObjType = HTMLDocument
>Error code: 0    $ScriptLineNumber = 521
@@ Debug(3026) : $Name_IEIsObjType = IWebBrowser2
>Error code: 0    $ScriptLineNumber = 693
@@ Debug(3026) : $Name_IEIsObjType = IWebBrowser2
>Error code: 0    $ScriptLineNumber = 3039
@@ Debug(3026) : $Name_IEIsObjType = IWebBrowser2
>Error code: 0    $ScriptLineNumber = 3054
@@ Debug(3026) : $Name_IEIsObjType = IWebBrowser2
>Error code: 0    $ScriptLineNumber = 3024
@@ Debug(3026) : $Name_IEIsObjType = IWebBrowser2
>Error code: 0    $ScriptLineNumber = 698
@@ Debug(3026) : $Name_IEIsObjType = HTMLWindow2
>Error code: 0    $ScriptLineNumber = 1793
@@ Debug(3026) : $Name_IEIsObjType = HTMLWindow2
>Error code: 0    $ScriptLineNumber = 3039
@@ Debug(3026) : $Name_IEIsObjType = HTMLWindow2
>Error code: 0    $ScriptLineNumber = 3054
@@ Debug(3026) : $Name_IEIsObjType = HTMLWindow2
>Error code: 0    $ScriptLineNumber = 1799
@@ Debug(3026) : $Name_IEIsObjType = HTMLWindow2
>Error code: 0    $ScriptLineNumber = 3054
@@ Debug(3026) : $Name_IEIsObjType = HTMLWindow2
>Error code: 0    $ScriptLineNumber = 1777
--> IE.au3 T3.0-1 Warning from function _IEFrameGetObjByName, $_IEStatus_NoMatch (No frames matching name)
--> IE.au3 T3.0-1 Error from function _IEBodyWriteHTML, $_IEStatus_InvalidDataType

I turned on debugging ($__IEAU3Debug = True) with the older version (3.3.7.20++) that still works... but it gives some interesting errors:

--> COM Error Encountered in ie_scratch_test.au3
----> $IEComErrorScriptline = 3690
----> $IEComErrorNumberHex = 80020006
----> $IEComErrorNumber = -2147352570
----> $IEComErrorWinDescription = Unknown name.
----> $IEComErrorDescription = 
----> $IEComErrorSource = 
----> $IEComErrorHelpFile = 
----> $IEComErrorHelpContext = 
----> $IEComErrorLastDllError = 0


--> COM Error Encountered in ie_scratch_test.au3
----> $IEComErrorScriptline = 3690
----> $IEComErrorNumberHex = 80020006
----> $IEComErrorNumber = -2147352570
----> $IEComErrorWinDescription = Unknown name.
----> $IEComErrorDescription = 
----> $IEComErrorSource = 
----> $IEComErrorHelpFile = 
----> $IEComErrorHelpContext = 
----> $IEComErrorLastDllError = 0

I was hoping someone could confirm with the replicator whether or not it works for them in the latest stable AutoIt. If the script works, the text box below "Test" should say "hi" instead of being blank. I'm using Windows 8.1 that comes with IE11. Running it as admin did not change the result. Thanks!

Edited by complexjunk

Share this post


Link to post
Share on other sites
complexjunk

I hate to bump, but my last edit added a lot more debug info. Can someone try the example script and report whether or not they have the same issue? Thanks!

Share this post


Link to post
Share on other sites
jdelaney

Use this one instead:

_IEGetObjById

Also, my signature does the work of picking out the proper function for you (first link)...all you need is a "xpath" to the object.


IEbyXPATH-Grab IE DOM objects by XPATH IEscriptRecord-Makings of an IE script recorder ExcelFromXML-Create Excel docs without excel installed GetAllWindowControls-Output all control data on a given window.

Share this post


Link to post
Share on other sites
complexjunk

Use this one instead:

_IEGetObjById

Also, my signature does the work of picking out the proper function for you (first link)...all you need is a "xpath" to the object.

 

Looking at your xpath thing... I'm not having any luck with it. Things seem to behave as expected when they're not in an iFrame, I think that's the main problem I'm having. How does the test script behave for you?

Also, I can access the iFrame with _IEGetObjById, but nothing inside it.

Edited by complexjunk

Share this post


Link to post
Share on other sites
complexjunk

I've finally figured out what's wrong with my old code not running on the new AutoIt with the new IE.au3:

The old version of IE.au3 had a bug/feature that allowed you to use _IEFrameGetObjByName on frames/iframes by either their name or id tag. The new version only works if there's a name tag, and won't match by id tag. Unfortunately, I need to access a frame that's only referred to by id tag. 

jdelaney's suggestion _IEGetObjByID does not seem to work on frames or iframes... and if there was a name tag for the frame, you would use _IEFrameGetObjByName over _IEGetObjByNAme... But, there isn't an official _IEFrameGetObjByID yet.

The only way you can access it now is by _IEFrameGetCollection or there's also a UDF available: >_IEFrameGetObjByID...

Examples:

; Old code based on http://www.autoitscript.com/forum/topic/23752-issue-with-iframe/?p=168616
#include <IE.au3>
$oIE = _IECreate()
_IEBodyWriteHTML($oIE, "<h1>Test</H1><p><iframe src='about:blank' id ='foo'></iframe>"); iframe only uses ID tag
$oFrame = _IEFrameGetObjByName($oIE,"foo"); Only works on older IE.au3 that would take id or name tags.
_IEBodyWriteHTML($oFrame, "hi") ; Fails to change frame on newer versions of IE.au3

; Solution
#include <IE.au3>
$oIE = _IECreate()
_IEBodyWriteHTML($oIE, "<h1>Test</H1><p><iframe src='about:blank' id ='foo'></iframe>"); iframe only uses ID tag
$oFrame = _IEFrameGetCollection($oIE,0) ; Works!
_IEBodyWriteHTML($oFrame, "hi")

; jdelaney's suggestion for using _IEGetObjById
#include <IE.au3>
$oIE = _IECreate()
_IEBodyWriteHTML($oIE, "<h1>Test</H1><p><iframe src='about:blank' id ='foo'></iframe>"); iframe only uses ID tag
$oFrame = _IEGetObjById($oIE,"foo"); No errors, but...
_IEBodyWriteHTML($oFrame, "hi"); writes over entire page instead of iframe

; Alternate scenario with name tag using _IEFrameGetObjByName
#include <IE.au3>
$oIE = _IECreate()
_IEBodyWriteHTML($oIE, "<h1>Test</H1><p><iframe src='about:blank' name ='foo'></iframe>"); Changed ID tag to name tag
$oFrame = _IEFrameGetObjByName($oIE,"foo"); Works because there's a name tag on the iframe
_IEBodyWriteHTML($oFrame, "hi")

; Alternate scenario with name tag using _IEGetObjByName
#include <IE.au3>
$oIE = _IECreate()
_IEBodyWriteHTML($oIE, "<h1>Test</H1><p><iframe src='about:blank' name ='foo'></iframe>"); Changed ID tag to name tag
$oFrame = _IEGetObjByName($oIE,"foo"); Does not work on iframe, changes entire page
_IEBodyWriteHTML($oFrame, "hi")
Edited by complexjunk

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
Sign in to follow this  

  • Similar Content

    • ohaya
      By ohaya
      Hi,
      I have a situation where I need to make one request to get a kind of pre-logon page, then click a link on that pre-logon page, which then returns a login form page, and then fill in information in the form page and submit it.
      How can I handle that using AutoIT?
      I can get the AutoIT script to tab to the link, then send an ENTER, which then causes the FORM page to appear in IE.  However, I cannot seem to get the form object from the FORM page (_IEFormGetObjByName fails when it searches for the form).  Why is that, and how can I get the AutoIT to process the FORM page?
      Thanks,
      Jim
    • rm4453
      By rm4453
      I have a table I am parsing, to find specific vehicle information. I am unable to get _ArrayFindAll to return the only valid result with my test data.
      Below is a sample of the table's HTML:
      <td class="textCenter">2010</td> <td>TOYOTA</td> <td>TACOMA 4X4 DB</td> <td></td> <td>BLACK</td> <td class="textCenter">C</td> <td class="textCenter">6</td> <td>GAS</td> <td class="textCenter">A</td> <td class="textCenter">4X4</td> <td class="textCenter">Y</td> <td>CD</td> <td class="textCenter">HT</td> <td class="textCenter">C</td> <td class="textRight" nowrap="nowrap">80,975</td> <td class="textRight" nowrap="nowrap">$16,800</td> </tr> <tr><!-- 308 --> <td class="textCenter">2010</td> <td>TOYOTA</td> <td>TACOMA 4X4 RG</td> <td></td> <td>BLACK</td> <td class="textCenter">R</td> <td class="textCenter">4</td> <td>GAS</td> <td class="textCenter">5</td> <td class="textCenter">4X4</td> <td class="textCenter">A</td> <td>CD</td> <td class="textCenter">HT</td> <td class="textCenter">C</td> <td class="textRight" nowrap="nowrap">95,224</td> <td class="textRight" nowrap="nowrap">$9,500</td> </tr> <tr><!-- 309 --> <td class="textCenter">2011</td> <td>BUICK</td> <td>REGAL</td> <td>CXL RL4</td> <td>BLACK</td> <td class="textCenter">4</td> <td class="textCenter">4</td> <td>GAS</td> <td class="textCenter">A</td> <td class="textCenter"></td> <td class="textCenter">A</td> <td>CD</td> <td class="textCenter">SR</td> <td class="textCenter">L</td> <td class="textRight" nowrap="nowrap">102,694</td> <td class="textRight" nowrap="nowrap">$5,000</td> </tr> <tr><!-- 310 --> <td class="textCenter">2011</td> <td>CHEVROLET</td> <td>AVALANCH 4X4 CR</td> <td>LS</td> <td>GRAY</td> <td class="textCenter">C</td> <td class="textCenter">8</td> <td>E</td> <td class="textCenter">A</td> <td class="textCenter">4X4</td> <td class="textCenter">A</td> <td>CD</td> <td class="textCenter">HT</td> <td class="textCenter">C</td> <td class="textRight" nowrap="nowrap">64,759</td> <td class="textRight" nowrap="nowrap">$16,300</td> </tr> <tr><!-- 311 --> <td class="textCenter">2011</td> <td>CHEVROLET</td> <td>EQUINOX AWD 4C</td> <td>LT W/2LT</td> <td>BLACK</td> <td class="textCenter">S</td> <td class="textCenter">4</td> <td>GAS</td> <td class="textCenter">A</td> <td class="textCenter">AWD</td> <td class="textCenter">Y</td> <td>CD</td> <td class="textCenter">SR</td> <td class="textCenter">C</td> <td class="textRight" nowrap="nowrap">91,896</td> <td class="textRight" nowrap="nowrap">$4,400</td> </tr> <tr><!-- 312 --> <td class="textCenter">2011</td> <td>CHEVROLET</td> <td>TAHOE 4X4 V8</td> <td>LTZ</td> <td>WHITE</td> <td class="textCenter">S</td> <td class="textCenter">8</td> <td>C</td> <td class="textCenter">A</td> <td class="textCenter">4X4</td> <td class="textCenter">A</td> <td>N</td> <td class="textCenter">MR</td> <td class="textCenter">L</td> <td class="textRight" nowrap="nowrap">126,982</td> <td class="textRight" nowrap="nowrap">$17,800</td> </tr> <tr><!-- 313 --> <td class="textCenter">2011</td> <td>CHEVROLET</td> <td>1500 SLV 4X4 EX</td> <td>LT</td> <td>GRAY</td> <td class="textCenter">X</td> <td class="textCenter">8</td> <td>GAS</td> <td class="textCenter">O</td> <td class="textCenter">4X4</td> <td class="textCenter">A</td> <td>CD</td> <td class="textCenter">HT</td> <td class="textCenter">C</td> <td class="textRight" nowrap="nowrap">60,303</td> <td class="textRight" nowrap="nowrap">$18,100</td> </tr> <tr><!-- 314 --> <td class="textCenter">2011</td> <td>CHEVROLET</td> <td>1500 SLV 4X4 EX</td> <td>LT</td> <td>SILVER</td> <td class="textCenter">X</td> <td class="textCenter">8</td> <td>E</td> <td class="textCenter">O</td> <td class="textCenter">4X4</td> <td class="textCenter">A</td> <td>CD</td> <td class="textCenter">HT</td> <td class="textCenter">C</td> <td class="textRight" nowrap="nowrap">89,403</td> <td class="textRight" nowrap="nowrap">$15,900</td> </tr> <tr><!-- 315 --> <td class="textCenter">2011</td> <td>CHEVROLET</td> <td>1500 SLV 4X4 EX</td> <td>LTZ</td> <td>BLUE</td> <td class="textCenter">X</td> <td class="textCenter">8</td> <td>E</td> <td class="textCenter">A</td> <td class="textCenter">4X4</td> <td class="textCenter">A</td> <td>CD</td> <td class="textCenter">HT</td> <td class="textCenter">L</td> <td class="textRight" nowrap="nowrap">53,087</td> <td class="textRight" nowrap="nowrap">$17,700</td> </tr> <tr><!-- 316 --> <td class="textCenter">2011</td> <td>CHEVROLET</td> <td>3500 CUTAWAY</td> <td>WORK VAN</td> <td>WHITE</td> <td class="textCenter">S</td> <td class="textCenter"></td> <td></td> <td class="textCenter">A</td> <td class="textCenter">4X2</td> <td class="textCenter"></td> <td>N</td> <td class="textCenter">HT</td> <td class="textCenter">C</td> <td class="textRight" nowrap="nowrap">202,477</td> <td class="textRight" nowrap="nowrap">$2,700</td> </tr> <tr><!-- 317 --> <td class="textCenter">2011</td> <td>CHRYSLER</td> <td>TOWN &amp; COUNTRY</td> <td>TOURING</td> <td>BLACK</td> <td class="textCenter">4</td> <td class="textCenter">6</td> <td>E</td> <td class="textCenter">A</td> <td class="textCenter">4X2</td> <td class="textCenter">A</td> <td>CD</td> <td class="textCenter">HT</td> <td class="textCenter"></td> <td class="textRight" nowrap="nowrap">198,541</td> <td class="textRight" nowrap="nowrap">$1,900</td> </tr> <tr><!-- 318 --> <td class="textCenter">2011</td> <td>DODGE</td> <td>DURANGO AWD V6</td> <td>CREW</td> <td>BLUE</td> <td class="textCenter">S</td> <td class="textCenter">6</td> <td>GAS</td> <td class="textCenter">A</td> <td class="textCenter">AWD</td> <td class="textCenter">A</td> <td>CD</td> <td class="textCenter">SR</td> <td class="textCenter">C</td> <td class="textRight" nowrap="nowrap">176,036</td> <td class="textRight" nowrap="nowrap">$2,800</td> </tr> <tr><!-- 319 --> <td class="textCenter">2011</td> <td>FORD</td> <td>FOCUS</td> <td>SE</td> <td>SILVER</td> <td class="textCenter">4</td> <td class="textCenter">4</td> <td>GAS</td> <td class="textCenter">A</td> <td class="textCenter"></td> <td class="textCenter">Y</td> <td>CD</td> <td class="textCenter">HT</td> <td class="textCenter">C</td> <td class="textRight" nowrap="nowrap">101,929</td> <td class="textRight" nowrap="nowrap">$3,100</td> </tr> <tr><!-- 320 --> <td class="textCenter">2011</td> <td>FORD</td> <td>FUSION FWD 4C</td> <td>SEL</td> <td>WHITE</td> <td class="textCenter">4</td> <td class="textCenter">4</td> <td>GAS</td> <td class="textCenter">A</td> <td class="textCenter"></td> <td class="textCenter">Y</td> <td>CD</td> <td class="textCenter">SR</td> <td class="textCenter">L</td> <td class="textRight" nowrap="nowrap">78,290</td> <td class="textRight" nowrap="nowrap">$5,500</td> </tr> <tr><!-- 321 --> <td class="textCenter">2011</td> <td>FORD</td> <td>F150 4X4 CR</td> <td>XLT</td> <td>BLACK</td> <td class="textCenter">C</td> <td class="textCenter">8</td> <td>GAS</td> <td class="textCenter">A</td> <td class="textCenter">4X4</td> <td class="textCenter">Y</td> <td>CD</td> <td class="textCenter">HT</td> <td class="textCenter">C</td> <td class="textRight" nowrap="nowrap">70,909</td> <td class="textRight" nowrap="nowrap">$16,000</td> </tr> <tr><!-- 322 --> <td class="textCenter">2011</td> <td>FORD</td> <td>MUSTANG V6 CPE</td> <td>V6 PREMIUM</td> <td>BLACK</td> <td class="textCenter">2</td> <td class="textCenter">6</td> <td>GAS</td> <td class="textCenter">A</td> <td class="textCenter">4X2</td> <td class="textCenter">A</td> <td>CD</td> <td class="textCenter">HT</td> <td class="textCenter">L</td> <td class="textRight" nowrap="nowrap">92,531</td> <td class="textRight" nowrap="nowrap">$2,700</td> </tr> <tr><!-- 323 --> <td class="textCenter">2011</td> <td>GMC</td> <td>ACADIA FWD</td> <td>SLE</td> <td>RED</td> <td class="textCenter">4</td> <td class="textCenter">6</td> <td>GAS</td> <td class="textCenter">A</td> <td class="textCenter"></td> <td class="textCenter">A</td> <td>CD</td> <td class="textCenter">HT</td> <td class="textCenter">C</td> <td class="textRight" nowrap="nowrap">79,199</td> <td class="textRight" nowrap="nowrap">$10,700</td> A picture of the table test data is attached here:

      Here is the _query function, and all other relevant code that I can share.
       
      Func _query($aSel, $aUrls) $oIE = _login() If $oIE = "Return" Then Return EndIf $j = 0 While $j < UBound($aSel) - 1 $i = 1 $aucID ;Unable To Share What This Is Other Than Var Name. _IENavigate($oIE, "Something" & $aucID[0] & "Something") _IELoadWait($oIE, 100, 2000) $oObj = _IETableGetCollection($oIE, 3) $cars = _IETableWriteToArray_ProgressBar($oObj, True, "Processing Requested Information!") ;<---- Modified Version See Post For It: https://www.autoitscript.com/forum/topic/195335-solved-how-to-add-a-progress-bar-to-_ietablewritetoarray/?tab=comments#comment-1400699 $carsYear = _filter($cars, 0, 0, GUICtrlRead($year)) $carsMake = _filter($carsYear, 0, 1, GUICtrlRead($make)) Global $carsModel = _filter($carsMake, 0, 2, GUICtrlRead($model)) $i = 0 $engine = GUICtrlRead($engine) If $engine <> "" Then While $i < StringLen($engine) $carsEngine = _filter($carsModel, 0, 6 + $i, StringLeft($engine, 1)) ;_ArrayDisplay($carsModel, "Cars Model Before Array Delete") $x = 1 While $x <= UBound($carsModel) _ArrayDelete($carsModel, $x) $x += 1 WEnd ;_ArrayDisplay($carsModel, "Cars Model After Array Delete") ;_ArrayConcatenate($carsModel, $carsEngine) ;_ArrayDisplay($carsModel, "Cars Model After Concatenate") $engine = StringTrimLeft($engine, 1) $i += 1 WEnd Else Dim $carsEngine[1][16] EndIf _ArrayConcatenate($carsEngine, $carsModel) _ArrayDisplay($carsEngine, "Cars Engine") Dim $carsDriveTrain[1][16] Dim $carsDriveTrain2[1][16] $driveTrainVal = GUICtrlRead($driveTrain) If $driveTrainVal = "4x4" Or $driveTrainVal = "awd" Then $carsDriveTrain = _filter($carsEngine, 0, 9, "4") $carsDriveTrain2 = _filter($carsEngine, 0, 9, "a") ;~ _ArrayDisplay($carsDriveTrain, "Drive Train Before") ;~ If @error Then ;~ MsgBox("", "", "Cars Drive Train Error: " & @error) ;~ EndIf ;~ _ArrayDisplay($carsDriveTrain2, "Drive Train2 Before") ;~ If @error Then ;~ MsgBox("", "", "Cars Drive Train 2 Error: " & @error) ;~ EndIf _ArrayConcatenate($carsDriveTrain, $carsDriveTrain2) _ArrayDisplay($carsDriveTrain, "Drive Train After Concat") ElseIf $driveTrainVal = "" Then _ArrayConcatenate($carsDriveTrain, $carsEngine) Else $carsDriveTrain = _filter($carsEngine, 0, 9, $driveTrain) EndIf Dim $carsOdom[1][16] $min = GUICtrlRead($odomMin) $max = GUICtrlRead($odomMax) For $i = 0 To UBound($carsDriveTrain) - 1 If $carsDriveTrain[$i][14] > $min And $carsDriveTrain[$i][14] < $max Then _ArrayAdd($carsOdom, $carsDriveTrain[$i]) MsgBox("", "", "ADDED!") EndIf Next _ArrayDisplay($carsOdom, "Cars Odom") $j += 1 WEnd _IEQuit($oIE) EndFunc ;==>_query Func _filter($tofilter, $xpos1, $ypos1, $str) ;~ If UBound($tofilter, 1) <= 1 Then ;~ $endx = 0 ;~ Else ;~ $endx = UBound($tofilter, 1) - 1 ;~ EndIf ;~ $cars = _ArrayFindAll($tofilter, $str, $tofilter[$xpos1][$ypos1], $tofilter[$endx][$ypos1], 0, 1, $ypos1, False) $cars = _ArrayFindAll($tofilter, $str, Default, Default, 0, 1, $ypos1) Dim $carsFiltered[1][16] = [["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p"]] ;_ArrayDisplay($carsFiltered) $i = 0 $uBound = UBound($cars) - 1 While $i < $uBound $filtered = _ArrayExtract($tofilter, $cars[$i], $cars[$i], 0, 15) ;_ArrayDisplay($filtered, "_filter Array of Filtered") _ArrayConcatenate($carsFiltered, $filtered) $i += 1 WEnd _ArrayDelete($carsFiltered, 0) Return $carsFiltered EndFunc ;==>_filter  
      If you know of a more efficient way of doing this please let me know would be more than happy to chew down my inefficiency while learning! (It's like my grandpa used to say, "The only criticism I can't use is that which is not given to me.")
       
      The Item an I am using to test the filter is:

       
    • rm4453
      By rm4453
      Hello,
       
      I am currently writing a program that parses a massive table from a website, and need a way to add a progress bar while parsing.
      I am currently using the function _IETableWriteToArray($oObj, True) to parse the array. I need the progress bar to update as the table is parsed, not just at the end of the parsing.
      Any help at all would be very much appreciated!
       
      *EDIT --> The array I am left with after parsing is $array[0-50000][16]
    • SkysLastChance
      By SkysLastChance
      I have a goofy problem. I am hoping someone could shed some light. The example is not going around the text box. It is way off. 
      I have seen some post blaming IE 11, however I have IE11 on my desktop and it works fine.
      Is there anything I can do that might fix this? 
       
      ; Open a browser with the form example and get a reference to the form ; textarea element. Get the coordinates and dimensions of the text area, ; outline its shape with the mouse and come to rest in the center #include <IE.au3> Local $oIE = _IE_Example("form") Local $oForm = _IEFormGetObjByName($oIE, "ExampleForm") Local $oTextArea = _IEFormElementGetObjByName($oForm, "textareaExample") ; Get coordinates and dimensions of the textarea Local $iScreenX = _IEPropertyGet($oTextArea, "screenx") Local $iScreenY = _IEPropertyGet($oTextArea, "screeny") Local $iWidth = _IEPropertyGet($oTextArea, "width") Local $iHeight = _IEPropertyGet($oTextArea, "height") ; Outline the textarea with the mouse, come to rest in the center Local $iMousespeed = 50 MouseMove($iScreenX, $iScreenY, $iMousespeed) MouseMove($iScreenX + $iWidth, $iScreenY, $iMousespeed) MouseMove($iScreenX + $iWidth, $iScreenY + $iHeight, $iMousespeed) MouseMove($iScreenX, $iScreenY + $iHeight, $iMousespeed) MouseMove($iScreenX, $iScreenY, $iMousespeed) MouseMove($iScreenX + $iWidth / 2, $iScreenY + $iHeight / 2, $iMousespeed)  
       
    • SkysLastChance
      By SkysLastChance
      So I have two things I am trying to click.
      Policy which works.
      $oInputs3 = _IETagNameGetCollection($oIE, "div") For $oInput3 in $oInputs3 If StringStripWS($oInput3.innertext,1) = "Policy" Then $target = $oInput3 _IELoadWait($target,"",70000) ExitLoop EndIf Next _IEAction($target, "click")  

      And Add Insurance which I havent been able to get to work. 
      $oInputs2 = _IETagNameGetCollection($oIE, "div") For $oInput2 in $oInputs2 If StringStripWS($oInput2.innertext,1) = "Add Insurance" Then $target = $oInput2 _IELoadWait($target,"",70000) ExitLoop EndIf Next _IEAction($target, "click")

      Any Ideas on what I am doing wrong?  I feel like it might be the spaces between >  Add Insurance  < but I am not sure. 
×