Jump to content

_IEAttach issue


vpn
 Share

Recommended Posts

Hi,

I am new to AutoIt.

Could anyone answer the following question regarding to _IEAttach?

Question 1:

Scenario:

1. open browser manually (without AutoIt).

- http://cgi-lib.berkeley.edu/ex/fup.html

2. click browse button using AutoIt

here is the AutoIt src I created, and it does not work!

Could you help me on this?

#include <IE.au3>
WinActivate("[CLASS:IEFrame]")
Dim $oHandle = WinGetHandle("[CLASS:IEFrame]")
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') :  WinGetHandle("[CLASS:IEFrame]") = ' &  WinGetHandle("[CLASS:IEFrame]") & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
Dim $oTitle = WinGetTitle($oHandle)
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') :  WinGetTitle($oHandle) = ' &  WinGetTitle($oHandle) & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
Dim $oIE = _IEAttach($oTitle)
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') :  _IEAttach($oTitle) = ' &  _IEAttach($oTitle) & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
Dim $oButton = _IEGetObjByName($oIE,"upfile")
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') :  _IEGetObjByName($oIE,"upfile") = ' &  _IEGetObjByName($oIE,"upfile") & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
_IEAction($oButton,"click")

Error Msg:

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

@@ Debug(9) : _IEAttach($oTitle) = 0

>Error code: 7

Question 2:

Could you also help me how to click "Press" button, which has neither id nor name element?

- http://cgi-lib.berkeley.edu/ex/fup.html

Thank you in advance!

Link to comment
Share on other sites

Use the URL type in _IEAttach().

You don't have to find the button, but it is the Submit action for the form. So you can just use _IEFormSubmit(). If you must find something without a name or id, you can select it by 0-based index.

Like this:

#include <IE.au3>
_IEErrorHandlerRegister()
Global $sURL = "http://cgi-lib.berkeley.edu/ex/fup.html"
Global $oIE = _IEAttach($sURL, "url")
Global $oButton = _IEGetObjByName($oIE, "upfile")
_IEAction($oButton, "click")
MsgBox(64, "Wait", "Click OK to continue")

; Submit form
$oForm = _IEFormGetCollection($oIE, 0) ; Get first form
_IEFormSubmit($oForm)

; Or find the input by 0-based index and click
$oPress = _IETagNameGetCollection($oForm, "input", 2) ; Get third input tag
_IEAction($oPress, "click")
Valuater's AutoIt 1-2-3, Class... Is now in Session!For those who want somebody to write the script for them: RentACoder"Any technology distinguishable from magic is insufficiently advanced." -- Geek's corollary to Clarke's law
Link to comment
Share on other sites

Hi PsaltyDS,

Thank you for the working sample!

it really help me a lot!

But, I actually have further questions. Could you please help me on this?

Question 1:

I made a modification to the src.

Now I use ControlGetText("[CLASS:IEFrame]", "", "Edit1") to get the URL in order to get URL dynamically.

It works, but I have no idea why it's "Edit1"? Isn't that something like [ToolbarWindow32;INSTANCE2]?

Window Info tool does not detect "Edit1." So where does it come from?

Question 2:

In the src, you suggested me to use _IEAttach($sURL, "url").

It works. But, I can not understand why since following Function Reference confuses me a lot in comparison to what you did.

- http://www.autoitscript.com/autoit3/docs/libfunctions/_IEAttach.htm

Could you please explain a bit more?

Question 3:

Now I added select file section to the src.

And, it does not work.

But, the strange thing is that it actually works if I run this section from separate .exe by creating another .au3 with only select file section and compile.

Why it does not work as a single file just like the src you can see here?

#include <IE.au3>
_IEErrorHandlerRegister()
WinActivate("[CLASS:IEFrame]")
Global $sURL = ControlGetText("[CLASS:IEFrame]", "", "Edit1")
#region Global $sURL = "http://cgi-lib.berkeley.edu/ex/fup.html"
Global $oIE = _IEAttach($sURL, "url")
Global $oButton = _IEGetObjByName($oIE, "upfile")
_IEAction($oButton, "click")
#region MsgBox(64, "Wait", "Click OK to continue")

Sleep(2000)
; Select File
_WinWaitActivate("[CLASS:#32770]","")
WinActivate("[CLASS:#32770]","")
ControlSetText("[CLASS:#32770]", "","[CLASS:Edit; INSTANCE:1]","test.txt")
ControlClick("[CLASS:#32770]", "","[CLASS:Button; INSTANCE:2]")

; Submit form
WinActivate("[CLASS:IEFrame]")
$oForm = _IEFormGetCollection($oIE, 0) ; Get first form
_IEFormSubmit($oForm)


#region --- Internal functions Au3Recorder Start ---
Func _WinWaitActivate($title,$text,$timeout=0)
WinWait($title,$text,$timeout)
If Not WinActive($title,$text) Then WinActivate($title,$text)
WinWaitActive($title,$text,$timeout)
EndFunc
#endregion --- Internal functions Au3Recorder End ---

Thanks!

Link to comment
Share on other sites

A1: That is ClassNameNN, which is the control ID plus instance number. See help file under control identification and you can see them with AU3Info.

A2: I don't know what your question is about the example script.

A3: Your main script is probably blocked (waiting for something to finish or return). Check on using f_wait = false in the function that calls the pop-up. (See help file.)

:D

(Posted from my phone.)

Valuater's AutoIt 1-2-3, Class... Is now in Session!For those who want somebody to write the script for them: RentACoder"Any technology distinguishable from magic is insufficiently advanced." -- Geek's corollary to Clarke's law
Link to comment
Share on other sites

Hi PsaltyDS,

Thank you for your kindness.

A3: Your main script is probably blocked (waiting for something to finish or return). Check on using f_wait = false in the function that calls the pop-up. (See help file.)

I really feel I am not smart but ...you refer to following function correct?

http://www.autoitscript.com/autoit3/docs/libfunctions/_WinAPI_GetOverlappedResult.htm

May I have simple sample how to use this function?

Thanks.

Link to comment
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
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...