Sienimies Posted February 6, 2012 Share Posted February 6, 2012 Hi, I have tried hard to find the anwser, but haven't found anything that works. I want to click on the button "Hae", but I can't use form submit, since this isn't the submit button in that form. And the button doesn't have a name or an id. I can get to the editboxes just fine. Website source: <div> <label for="">Piiriväli</label> <input type="text" name="routeNumberFrom" value="" class="route" /> <input type="text" name="routeNumberTo" value="" class="route" /> <input type="button" class="button" value="Hae" onclick="submitAction('addRouteInterval');"/> </div> Code I have so far: #include <IE.au3> Opt("SendCapslockMode", 0) ;1=store and restore, 0=don't Opt("WinTitleMatchMode", 2) ;1=start, 2=subStr, 3=exact, 4=advanced, -1 to -4=Nocase if MsgBox ( 1, "Jatketaanko", "Ennen kuin jatkat, avaa selain DI sivustolle, tulosta e-jakokirja kohtaan. Tyhjennä mahdolliset piiritiedot. Paina tämän jälkeen OK") = 1 Then Local $hWin = WinGetHandle("Ejakokirjan tulostus", "") ; DI window If IsHWnd($hWin) Then Local $o_IE = _IEAttach("Ejakokirjan tulostus") ConsoleWrite("Ejakokirjan tulostus window handle: $hWin = " & $hWin & @LF) ControlFocus($hWin, "", $hWin) Local $o_PiiriForm = _IEFormGetObjByName ($o_IE, "printableEbookForm") ; Form name Local $o_PiiriFrom = _IEFormElementGetObjByName ($o_PiiriForm, "routeNumberFrom") ; Editbox name _IEFormElementSetValue ($o_PiiriFrom, "1022001") Local $o_PiiriTo = _IEFormElementGetObjByName ($o_PiiriForm, "routeNumberTo") ; Editbox name _IEFormElementSetValue ($o_PiiriTo, "1022009") ; Click HAE Else ConsoleWrite("Debug: Error, failed to get control handle for Ejakokirjan tulostus window." & @LF) EndIf EndIf Link to comment Share on other sites More sharing options...
sleepydvdr Posted February 6, 2012 Share Posted February 6, 2012 If you gave us a link to the exact page, that would help us to help you. #include <ByteMe.au3> Link to comment Share on other sites More sharing options...
Robjong Posted February 6, 2012 Share Posted February 6, 2012 (edited) HI, It looks like you could just call the Javascript function 'submitAction' directly. $o_IE.document.parentWindow.ExecScript("submitAction('addRouteInterval');") or you can loop over all input elements and match the value. Local $oInput, $oInputs = _IETagNameGetCollection($o_IE, 'input', -1) For $oInput In $oInputs If $oInput.value == 'Hae' Then _IEAction($oInput, "click") _IELoadWait($o_IE) EndIf Next Edited February 6, 2012 by Robjong Link to comment Share on other sites More sharing options...
Sienimies Posted February 28, 2012 Author Share Posted February 28, 2012 Hi, Sorry for the late answer, have been busy @Sleepydvdr, I can't provide a direct link since the site is behind password protection. @Robjong, fantastic ! The direct call to the javascript was exactly what I have been looking for. Didn't stumble upon that one anywhere. Thank you for your help. Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now