Jump to content
sqa

what is $_TESTATUS_InvalidObjectType

Recommended Posts

sqa

I am really stuck with this.

#include<IE.au3>

local $oIE = _IEAttach("Application")   ; the name of Tab

local $oForm = _IEFormElementGetObjByName($oIE, "lastName")   ; "lastName" - <input name="lastName" class...>

 

running it,, there is an error: _IEFormElementGetObjByName, $_TESTATUS_InvalidObjectType

What's wrong?

Edited by sqa

Share this post


Link to post
Share on other sites
Anoop

Have you create already an IE instance with string " Application " in its title?

 

You can try below function for getting an object with name.

_IEGetObjByName ( ByRef $oObject, $sName [, $iIndex = 0] )

 

Thanks

Anoop

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

    • milos83
      By milos83
      I have one script that creates _IECreateEmbedded and another script that does _IEAttach.
      I do this because when autoit is doing something, the Embedded IE starts stalling (eg jquery progress animation)
      But there is a new problem.
      When IE is having its own process (like in the example above) any _IE command is slow (in the script that Attaches).
      Here is a comparison of when its in separate and when its in same process:
      Separate process _IETagNameGetCollection : 5000ms
      Separate process _IEAction: 850ms
      Same process _IETagNameGetCollection : 1ms
      Same proccess _IEAction: 135ms
       
      If I try to attach to an embedded IE that is done in c#, I get lightning fast results.
      As you can see, _IE functions work very slow when the embedded IE we are attaching to is made in Autoit.
       
      I did a test and if I empty the WHILE loop in IE process I get these results(but the cpu is at 30% as expected):
      Separate process _IETagNameGetCollection : 33ms
      Separate process _IEAction: 13ms
       
      It slows down if you put anything (like GUIGetMsg) in the WHILE loop.
       
      How do I fix this?
       
      Create IE:
      #include <GUIConstantsEx.au3> #include <IE.au3> #include <WindowsConstants.au3> Local $oIE = _IECreateEmbedded() GUICreate("My Embedded Web control Test", 640, 580, (@DesktopWidth - 640) / 2, (@DesktopHeight - 580) / 2, $WS_OVERLAPPEDWINDOW + $WS_CLIPSIBLINGS + $WS_CLIPCHILDREN) GUICtrlCreateObj($oIE, 10, 40, 600, 360) GUISetState(@SW_SHOW) ;Show GUI _IENavigate($oIE, "http://www.autoitscript.com") $timer = TimerInit() $oLink = _IETagNameGetCollection($oIE, "a", 3) ;takes 1ms ConsoleWrite(TimerDiff($timer) & @CRLF) $timer = TimerInit() _IEAction($oLink, "click") ;takes 135ms ConsoleWrite(TimerDiff($timer) & @CRLF) While 1 Local $iMsg = GUIGetMsg() Select Case $iMsg = $GUI_EVENT_CLOSE ExitLoop EndSelect WEnd  
      Attach to IE:
      #include <IE.au3> Local $oIE = _IEAttach("My Embedded Web control Test", "embedded") $timer = TimerInit() $oLink = _IETagNameGetCollection($oIE, "a", 3) ; 5000ms ConsoleWrite(TimerDiff($timer) & @CRLF) $timer = TimerInit() _IEAction($oLink, "click") ; 850ms ConsoleWrite(TimerDiff($timer) & @CRLF)  
       
      attach.au3
      create.au3
    • 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?
    • van_renier
      By van_renier
      Could someone help me understand why I'm losing the object for certain _IE  user-functions (those included with Au3 v3.3.10.2)
      #include <IE.au3> ; Required for automatically entering login credentials to app manager GLOBAL $oIE $oIE = _IECreate("about:blank", 1) ; _IEQuit ($oIE) ; _IEQuit line HERE, it work, closing the browser... ConsoleWrite ("===============================" & @CRLF ) If WinExists ( "Blank Page - Windows Internet Explorer") <> 1 then While WinExists ("Blank Page - Windows Internet Explorer") <> 1 sleep ( 500 ) WEnd EndIf sleep ( 1200 ) ConsoleWrite ("===============================" & @CRLF ) ; _IEQuit ($oIE) ; _IEQuit line HERE, it work, closing the browser... ConsoleWrite ('This is where the object, $oIE, gets broken/lost' & @CRLF ) _IENavigate( $oIE, "http://www.msn.com" ) sleep (3000) ConsoleWrite ("===============================" & @CRLF ) sleep ( 5000 ) _IEQuit ($oIE) ; HERE FAILS, console error: "--> IE.au3 T3.0-1 Error from function _IEQuit, $_IEStatus_InvalidObjectType" exit In the above script, there are 3 lines with _IEQuit. The 1st 2 are commented out, but they work with closing the browser fine, but the 3rd line, fails to close out the browser window.
      (I'm not wanting to close out the browser window, but I was trying to figure out why subsequent calls lose the object variable reference of $oIE. Using _IEQuit seemed to be the easiest way to ensure we were attached to the same browser window.
      I've also noticed that using the above script, after the script exits (with the 3rd _IEQuit line intact), since the browser window is still open, if I try and enter any URL into the adress bar, pressing enter then causing a new browser window to open up.
      Any suggestions on why the object reference is getting broken?
      Thanks,
      Van
       
    • 6105
      By 6105
      Hi,

      Can't resolve a problem with killing needed attached tabs, always is killed 3 from 5.
      Here is 6 links, 5 need to be killed:


      #include <IE.au3> #include <String.au3> $oIE = _IECreate('facebook.com') __IENavigate($oIE, 'm.facebook.com', 0, 0x800) __IENavigate($oIE, 'm.facebook.com', 0, 0x800) __IENavigate($oIE, 'm.facebook.com', 0, 0x800) __IENavigate($oIE, 'm.facebook.com', 0, 0x800) __IENavigate($oIE, 'm.facebook.com', 0, 0x800) sleep(5000) Dim $aIE[1] Dim $aRE[1] $aIE[0] = 0 $aRE[0] = 0 $i = 1 While 1 $oIE = _IEAttach ("", "instance", $i) If @error = $_IEStatus_NoMatch Then ExitLoop ReDim $aIE[$i + 1] ReDim $aRE[$i + 1] $aIE[$i] = $oIE $get = _IEPropertyGet($oIE, "locationurl") $aRE[$i] = $get $aIE[0] = $i $check = _StringBetween($get, "m.", ".com") If not @error then $oIE = _IEAttach ("", "instance", $i) ConsoleWrite('Get = '&$get&@CRLF) _IEQuit($oIE) sleep(200) EndIf $i += 1 WEnd MsgBox(0, "Browsers Found", "Number of browser instances in the array: " & $aIE[0])

      Thank you in advance.
      Tedy.
×