PDA

View Full Version : Losing control once I press a web page button. HELP!



mctabish
12-06-2009, 04:08 PM
I am trying to automatically delete items from an in house intranet website.
I have the code that works upto the point of "delete" button pressing, and I have the code that works to press the next confirmation button. Each portion has been tested and works fine.
The problem is that the code STOPS, as soon as the code presses the "DELETE" button, until the CONFIRM button is MANUALLY pressed, then the code codes about it's merry way.
the call is
BACCDeleteSN(o_BACCDeleteSN,BACCDeleteSN_SN ) whereas o_BACCDeleteSN is the handle for the web page and then the BACCDeleteSN_SN is the specific serial number I am wanting to delete.


Sub BACCDeleteSN(o_BACCDeleteSN As Object, BACCDeleteSN_SN As String)
' Open 1 instance of BTS
'Verify we are deleting the right BACC
'With o_BACCDeleteSN.document.BACCMtaSearchBean
o_BACCDeleteSNPage = LCase(o_BACCDeleteSN.document.DocumentElement.outerHTML)
BACCDeleteSN_SNTest = LCase(SNExpanded(BACCDeleteSN_SN))
If InStr(1, o_BACCDeleteSNPage, BACCDeleteSN_SNTest, vbTextCompare) > 0 Then
Set o_BACCDeleteSNInputs = o_BACCDeleteSN.document.getElementsByTagName("input")
o_BACCDeleteSN.document.BACCMtaSearchBean.SelectAll.Click
'Set o_BACCDeleteSNBTNELEMENTCOL = o_BACCDeleteSN.document.getElementsByTagName("INPUT")
For Each btnInput In o_BACCDeleteSNInputs
If btnInput.Value = " DELETE " Then
btnInput.Click ' <- Everything works fine, to this point
'SendMessage Hndb, BM_CLICK, 0, 0
MsgBox "Here 1" '<- It never makes it here unless I MANUALLY press the confirmation button.
Exit For
End If
Next btnInput
' MsgBox "Here"
Call DeleteBacc '<-This is the call for where the code SHOULD press the button, but it never gets here...
End If

End Sub

Here is the DELETEBACC, but it never gets here


Sub DeleteBacc()
Dim hwnd As Long, hWnd1 As Long, hWnd2 As Long, HWND3 As Long, HWND4 As Long, HWND5 As Long, HWNDCont As Long, HWNDCont1 As Long
Dim Textlen As Long, FSO As Object, Carpeta As Object
Dim Texte As String, Txt As String, I As Integer, j As Integer, K As Integer
Dim tRECT As RECT
HWNDCont = 9999
While HWNDCont <> 0
Set WshShell = CreateObject("WScript.Shell")
'Iterate in order to minimize waiting for the window. When you get the handle: exit the bucle
For I = 1 To 12
hwnd = FindWindow("#32770", "Microsoft Internet Explorer")
If hwnd > 0 Then
z2 = EnumChildWindow(hwnd, 0)
Debug.Print z2
test1 = False
EnumChildWindow hwnd, 0 ' one call directly to list parent
EnumChildWindows hwnd, AddressOf EnumChildWindow, 0
'FindBACCDelete hwnd, AddressOf EnumChildWindow, 0
If test1 Then
MsgBox "Gotit!"
For j = 1 To 30
Hndb = FindWindowEx(hwnd, 0, "Button", "OK")
If Hndb > 0 Then
GetWindowRect Hndb, tRECT
'Get the regtancle of the botton and compute the middle point
With tRECT
x = .Left + (.Right - .Left) / 2
Y = .Top + (.Bottom - .Top) / 2
End With
'select the window
SetForegroundWindow hwnd
'place the pointer on the middle point
SetCursorPos x, Y
Delay 0.3
DoEvents
'click the button
SetActiveWindow Hndb
SendMessage Hndb, BM_CLICK, 0, 0
Delay 0.3
' SendMessage hndb, BM_CLICK, 0, 0
Exit For
Else
Delay 0.2
End If
Debug.Print "J", j
Next j
Exit For
End If 'test1
Else
Delay 0.5
End If
Debug.Print "I", I

Next I

Wend
End Sub


Here is the code from the WEBSITE (I am not good at HTML.....) I do NOT have any CONTROL ON THE WEBSITE! I have to live with what is there...
Here is the button calling code


<input type="button" onClick="return clickDelete();" value=" DELETE " name="deletebutton"

And here is the processing code for the button


function clickDelete()
{
var x, y;
if (document.BACCMtaSearchBean.delmacaddr)
{
x = document.BACCMtaSearchBean.delmacaddr;
y = false;
if (x.checked == true)
y = true;
for (i = 0; i < x.length; i++)
{
if (x[i].checked == true)
{
y = true; break;
}
}
if (y == false)
{
alert('No device(s) selected to delete. Please select device(s).');
return false;
}
var input_box=confirm("Are you sure you want to Delete the device(s)?");
if (input_box== false)
{
return false;
}
document.BACCMtaSearchBean.action.value="DELETE_DEVICES";
document.body.style.cursor = "wait";
document.BACCMtaSearchBean.searchbutton.disabled=true;
document.BACCMtaSearchBean.submit();
}
}



Is it the way I am opening the web page? Is there a way to have the page release until I can press the button?
Would putting my confirmation button press code in a CLASS help? I am very new to using classes!!!! I don't fully understand them.
Help!
Thanks!
Mc

Oorang
12-10-2009, 09:02 AM
When you say the code "Stops" do you mean the website pops a modal dialog box and the code doesn't proceed until the box has been closed, or do you mean it drops you back into the VBE like it hit a break point?