Jump to content

Recommended Posts

Posted

Hello Experts,

I am working on modifying table data of a browser currently in IE (soon in FF)

My sequence of operations:

1. Activate Browser

2. Get Browser table

3. Modify data  in table

4. Suppress any warning/error message from webpage

5. Activate the Webpage again 

6. Send {F11} key sequence twice to achieve some update without Updating form ( {F5})

 

My problem is at Step 5, as it activates the wrong window ( last used application rather than my browser window)

My code snippet for it as follows

$bFoundWindow = False
Local $aList = WinList("[REGEXPTITLE:(?i)(.*Internet Explorer.*)]")
Local $hWND = 0 
For $i = 1 To $aList[0][0]
    If False = $bFoundWindow And $aList[$i][0] <> "" And BitAND(WinGetState($aList[$i][1]), 1) Then
        WinActivate($aList[$i][1]) ; 1. Activate Browser window
        WinSetState ( $aList[$i][1], "", @SW_MAXIMIZE)
        $hWND = $aList[$i][1]
        $objEditIE = _IEAttach ($aList[$i][1], "hwnd")
        $oTitles = _IETagNameGetCollection($objEditIE, "TITLE")
        For $oTitle In $oTitles
            $sTitle = $oTitle.innerText
            If $sTitle = $searchString Then
                MsgBox(0,"APPLICATION Found", "Got Edit List Window", 1)
                $bFoundWindow = True
                ExitLoop
            EndIf
        Next
    EndIf
Next
If False = $bFoundWindow Then
    MsgBox(0,"Error","Please launch Edit window for updating values in Browser prior to script execution",10)
    Exit
EndIf

; MY CODE HERE TO MODIFY TABLE 
; 2. Get Browser table
; 3. Modify data  in table

; Check if message from webpage pop-up window exists if so click ok on it
Local $nCounter = 0
Local $nMaxCounter = 5
while 1
    If WinExists("Message from webpage","") Then
        ControlClick("Message from webpage","","Button1","primary",1) ;4. Suppress any warning/error message from webpage
    Else
        $nCounter = $nCounter + 1
        Sleep(100)
        ;MsgBox(0,"Counter", $nCounter, 1)
        If $nCounter = $nMaxCounter Then ExitLoop
    EndIf
WEnd

;5. Activate the Webpage again 
WinActivate($hWND) ; have already tried WinActivate($aList[$i][1]) but no success
;6. Send {F11} key sequence twice to achieve some update without Updating form ( {F5})
Send("{F11}") 
WinActivate($hWND) ;WinActivate($aList[$i][1])
Sleep(100)
Send("{F11}")

Any support will be highly appreciated

It doesn't get easier, you just get better...

Posted

I remember your prior thread. Still unclear why you are using WinList / WinActive with a browser window. I suspect that this could be done with _IEAttach if we had more details about the tab in question.

As far as your posted code, you could save the value of $aList[$i][1] at the point where you set $bFoundWindow = True. Then this value could be used later in the script.

Posted

@junkew- Thank you for sharing details for other options, for now I am using IE.au3 and FF.au3 ( since my system has Firefox version 45.0 which works fine with mozrepl) .I am also learning IUIAutomation, which I just started.

@Danp2- Yes it is a variation of my previous topic. I wish I could share link, but its highly customized for organization I work and uses IE and FF as browsers.

Q) Still unclear why you are using WinList / WinActive with a browser window

A) I have multiple windows ( not tabs)  of IE to manage, hence I thought WinList is the only way to first collect required IE window.  ( Please share any snippet that you think can work better for me)

I use WinActivate since I want to bring IE on top so that I can visually see the values being changed; Also in my code logic step 3 

; 3. Modify data  in table

I have used 

_IEAction($td,"click")
_IEAction($td,"focus")

and also want to send F11 key sequences to browser (Is it possible to send F11 without having it on top?)

Q) you could save the value of $aList[$i][1] at the point where you set $bFoundWindow = True.

A) I am doing so inside first loop , instead of inner loop ( how stupid of me).

$hWND = $aList[$i][1]

Will verify the change as soon as I get back to my PC and will post update

Let me know if you can improvements in my script.


 

It doesn't get easier, you just get better...

Posted
1 hour ago, MakzNovice said:

Please share any snippet that you think can work better for me

Look at example 5 in the help file entry for _IEAttach. This is how I would probably do it. If you know the window's title, you could also use it along with the instance number.

1 hour ago, MakzNovice said:

also want to send F11 key sequences to browser (Is it possible to send F11 without having it on top?)

Take a look at the help for ControlSend. Also, check the forums as I believe there are numerous examples of this.

Posted

@Danp2- Again thank you ControlSend works smooth. I am going to explore option with _IEAttach but for now, I get what I want t get my job done.

Thank you very much.

 

It doesn't get easier, you just get better...

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
×
×
  • Create New...