Jump to content
phamtua

Enable button IE

Recommended Posts

phamtua
#include <ButtonConstants.au3>
#include <IE.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 615, 442, 192, 124)
Local $oIE = _IECreateEmbedded()
GUICtrlCreateObj ($oIE, 0, 0, 609, 401)
_IENavigate ($oIE, "https://bit.ly/2y1VYBz") ; After visit this link, please choose 6 Digits and Press Button1
$Button1 = GUICtrlCreateButton("Button1", 248, 416, 75, 25)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
      Case $Button1
     $oQuery = _IEGetObjById($oIE, "field1")
      _IEFormElementSetValue ($oQuery, "123456")
      $oQuery = _IEGetObjById($oIE, "field2")
      _IEFormElementSetValue ($oQuery, "123456")
      $oQuery = _IEGetObjById($oIE, "field3")
      _IEFormElementSetValue ($oQuery, "123456")
      $oQuery = _IEGetObjById($oIE, "field4")
      _IEFormElementSetValue ($oQuery, "123456")
      $oQuery = _IEGetObjById($oIE, "field5")
      _IEFormElementSetValue ($oQuery, "123456")
      $oQuery = _IEGetObjById($oIE, "field6")
      _IEFormElementSetValue ($oQuery, "123456")
      $oQuery = _IEGetObjById($oIE, "field7")
      _IEFormElementSetValue ($oQuery, "123456")
      $oQuery = _IEGetObjById($oIE, "field8")
      _IEFormElementSetValue ($oQuery, "123456")
      $oQuery = _IEGetObjById($oIE, "field9")
      _IEFormElementSetValue ($oQuery, "123456")
    EndSwitch
WEnd

Hi all, I'm trying to set text to 9 fields and click Submit
Problem: After set text to 9 fields, I can't click Submit because it's disabled
P/s: Please choose 6 Digits then Press Button1

Share this post


Link to post
Share on other sites
Danyfirex
Posted (edited)

This works for me:

#include <IE.au3>

Local $oIE = _IECreate("https://bit.ly/2y1VYBz")
_IELoadWait($oIE)
Local $oBtn6 = 0

;wait 20 seconds max for button exists (my internet conection is bad so I need to handle page load this way)
Local $hTimer = TimerInit()
Local $iDiff = 0
While Sleep(300)
    $oBtn6 = _IEGetObjByClass($oIE, "jma-click-to-continue-button ui-btn ui-btn-icon-right ui-icon-carat-r")
    $iDiff = TimerDiff($hTimer)
    If $iDiff > 20000 Or IsObj($oBtn6) Then
        ExitLoop
    EndIf
WEnd

If IsObj($oBtn6) Then
    ConsoleWrite(IsObj($oBtn6) & @CRLF)
    _IEAction($oBtn6, "click")


    ;wait input exists
    $hTimer = TimerInit()
    $iDiff = 0
    Local $oQuery = 0
    While Sleep(300)
        $oQuery = _IEGetObjById($oIE, "field1")
        $iDiff = TimerDiff($hTimer)
        If $iDiff > 20000 Or IsObj($oQuery) Then
            ExitLoop
        EndIf
    WEnd
    Sleep(1000)
    If IsObj($oQuery) Then
        $oQuery = _IEGetObjById($oIE, "field1")
        _IEFormElementSetValue($oQuery, "123456")
        _IEAction($oQuery, "focus")
        Send("A") ;send a dummy value to activate next field
        $oQuery = _IEGetObjById($oIE, "field2")
        _IEFormElementSetValue($oQuery, "123456")
        _IEAction($oQuery, "focus")
        Send("A") ;send a dummy value to activate next field


        $oQuery = _IEGetObjById($oIE, "field3")
        _IEFormElementSetValue($oQuery, "123456")
        _IEAction($oQuery, "focus")
        Send("A") ;send a dummy value to activate next field


        $oQuery = _IEGetObjById($oIE, "field4")
        _IEFormElementSetValue($oQuery, "123456")
        _IEAction($oQuery, "focus")
        Send("A") ;send a dummy value to activate next field


        $oQuery = _IEGetObjById($oIE, "field5")
        _IEFormElementSetValue($oQuery, "123456")
        _IEAction($oQuery, "focus")
        Send("A") ;send a dummy value to activate next field


        $oQuery = _IEGetObjById($oIE, "field6")
        _IEFormElementSetValue($oQuery, "123456")
        _IEAction($oQuery, "focus")
        Send("A") ;send a dummy value to activate next field

        $oQuery = _IEGetObjById($oIE, "field7")
        _IEFormElementSetValue($oQuery, "123456")
        _IEAction($oQuery, "focus")
        Send("A") ;send a dummy value to activate next field

        $oQuery = _IEGetObjById($oIE, "field8")
        _IEFormElementSetValue($oQuery, "123456")
        _IEAction($oQuery, "focus")
        Send("A") ;send a dummy value to activate next field

        $oQuery = _IEGetObjById($oIE, "field9")
        _IEFormElementSetValue($oQuery, "123456")
        _IEAction($oQuery, "focus")
        Send("A") ;send a dummy value to activate next field
        Sleep(500)


        Local $oSubmit = _IEGetObjById($oIE, "custom-msft-submit")

        If IsObj($oSubmit) Then
            ConsoleWrite(IsObj($oSubmit) & @CRLF)
            _IEAction($oSubmit, "click")
        EndIf

    EndIf

EndIf



Func _IEGetObjByClass(ByRef $o_object, $s_Class, $i_index = 0)
    If Not IsObj($o_object) Then
        __IEConsoleWriteError("Error", "_IEGetObjByClass", "$_IEStatus_InvalidDataType")
        SetError($_IEStatus_InvalidDataType, 1)
        Return 0
    EndIf
    ;
    If Not __IEIsObjType($o_object, "browserdom") Then
        __IEConsoleWriteError("Error", "_IEGetObjByClass", "$_IEStatus_InvalidObjectType")
        SetError($_IEStatus_InvalidObjectType, 1)
        Return 0
    EndIf
    ;
    Local $i_found = 0
    ;
    $o_tags = _IETagNameAllGetCollection($o_object)
    For $o_tag In $o_tags
        If String($o_tag.className) = $s_Class Then
            If ($i_found = $i_index) Then
                SetError($_IEStatus_Success)
                Return $o_tag
            Else
                $i_found += 1
            EndIf
        EndIf
    Next
    ;
    __IEConsoleWriteError("Warning", "_IEGetObjByClass", "$_IEStatus_NoMatch", $s_Class)
    SetError($_IEStatus_NoMatch, 2)
    Return 0
EndFunc   ;==>_IEGetObjByClass

It could be improved just think think haha.

 

Saludos

Edited by Danyfirex

Share this post


Link to post
Share on other sites
phamtua

Thank you!

 

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

×