I would suggest you to use HttpWebRequest/HttpWebResponse classes in System.Net, see http://www.west-wind.com/presentations/dotnetWebRequest/dotnetWebRequest.htm
Private Sub AxWebBrowser1_DocumentComplete(ByVal sender As Object, ByVal e As AxSHDocVw.DWebBrowserEvents2_DocumentCompleteEvent) Handles AxWebBrowser1.DocumentComplete Dim vDoc, vTag Dim i As Integer Dim nPageID As Integer Dim strElementType As String Dim strElementName As String Dim strElementValue As String If p_nCurrPage >= p_nPageCount Then Exit Sub End If 'If Not (e.pDisp Is AxWebBrowser1.Object) Then ' Exit Sub 'End If bFillFinished = False nPageID = myDataset.Tables("tPage").Rows(p_nCurrPage)("nPageID") strSQL = "SELECT tElement.strElementName, tElement.strElementValue, tElementType.nElementType " & _ "FROM tElement INNER JOIN tElementType ON tElement.nElementTypeID = tElementType.nElementTypeID " & _ "WHERE (tElement.bActive = 1) AND (tElement.nPageID = " & nPageID & ") AND (tElement.nIssue_Target = " & p_nIssueTargetID & ") " & _ "ORDER BY tElement.nElementID" mySqlDataAdapter = New SqlDataAdapter(strSQL, mySqlConnection) If Not (myDataset.Tables("tElement") Is Nothing) Then myDataset.Tables("tElement").Clear() End If mySqlDataAdapter.Fill(myDataset, "tElement") vDoc = AxWebBrowser1.Document vdoc2 = CType(vDoc, mshtml.IHTMLDocument2) List1.Items.Clear() For i = 0 To myDataset.Tables("tElement").Rows.Count - 1 strElementType = myDataset.Tables("tElement").Rows(i)("nElementType") strElementType = LCase(strElementType).Trim strElementName = myDataset.Tables("tElement").Rows(i)("strElementName") strElementName = strElementName.Trim strElementValue = myDataset.Tables("tElement").Rows(i)("strElementValue") & "" strElementValue = strElementValue.Trim Select Case strElementType Case "value" vdoc2.all.item(strElementName).value = strElementValue Case "frame" Case "file" SetForegroundWindow(Me.Handle.ToInt64) strFileElementName = strElementName strFileElementValue = strElementValue Me.strElementType = strElementType vdoc2.all.item(strElementName).focus() SendKeys.Send(strElementValue) Case "checked" vdoc2.all.item(strElementName).checked = strElementValue Case "select" Dim nOption As Integer For nOption = 0 To vdoc2.all.item(strElementName).Options.length() - 1 If vdoc2.all.item(strElementName).Options(nOption).Text = strElementValue Then vdoc2.all.item(strElementName).Options(nOption).Selected = True End If Next nOption Case "click" strClickElementName = strElementName End Select List1.Items.Add(strElementName) Next i bFillFinished = True End Sub本人调试通过,而且是通过读数据库内容自动填写并提交
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick If p_bFirstOpen Then p_bFirstOpen = False AxWebBrowser1.Navigate(p_strIssueTargetAddr) End If If (strElementType = "file") Then SetForegroundWindow(Me.Handle.ToInt64) 'BringWindowToTop(Me.Handle.ToInt64) 'SetFocusAPI&(Me.Handle.ToInt64) If strFileElementValue <> vdoc2.all.item(strFileElementName).value Then vdoc2.all.item(strFileElementName).focus() AxWebBrowser1.Navigate(AxWebBrowser1.LocationURL) SendKeys.Send(strFileElementValue) Exit Sub End If End If If bFillFinished Then If (p_nCurrPage < p_nPageCount) Then If strTextAreaElementName = "" Then vdoc2.all.item(strClickElementName).click() End If p_nCurrPage = p_nCurrPage + 1 bFillFinished = False If (p_nCurrPage = p_nPageCount) And strTextAreaElementName = "" Then p_bFinished = True End If End If End If End Sub 加上这一段可以自动上传文件。
http://www.west-wind.com/presentations/dotnetWebRequest/dotnetWebRequest.htm
http://expert.csdn.net/Expert/topic/1957/1957476.xml?temp=8.849734E-02
Dim vDoc, vTag
Dim i As Integer
Dim nPageID As Integer
Dim strElementType As String
Dim strElementName As String
Dim strElementValue As String If p_nCurrPage >= p_nPageCount Then
Exit Sub
End If 'If Not (e.pDisp Is AxWebBrowser1.Object) Then
' Exit Sub
'End If bFillFinished = False
nPageID = myDataset.Tables("tPage").Rows(p_nCurrPage)("nPageID")
strSQL = "SELECT tElement.strElementName, tElement.strElementValue, tElementType.nElementType " & _
"FROM tElement INNER JOIN tElementType ON tElement.nElementTypeID = tElementType.nElementTypeID " & _
"WHERE (tElement.bActive = 1) AND (tElement.nPageID = " & nPageID & ") AND (tElement.nIssue_Target = " & p_nIssueTargetID & ") " & _
"ORDER BY tElement.nElementID" mySqlDataAdapter = New SqlDataAdapter(strSQL, mySqlConnection)
If Not (myDataset.Tables("tElement") Is Nothing) Then
myDataset.Tables("tElement").Clear()
End If
mySqlDataAdapter.Fill(myDataset, "tElement") vDoc = AxWebBrowser1.Document
vdoc2 = CType(vDoc, mshtml.IHTMLDocument2)
List1.Items.Clear()
For i = 0 To myDataset.Tables("tElement").Rows.Count - 1
strElementType = myDataset.Tables("tElement").Rows(i)("nElementType")
strElementType = LCase(strElementType).Trim
strElementName = myDataset.Tables("tElement").Rows(i)("strElementName")
strElementName = strElementName.Trim
strElementValue = myDataset.Tables("tElement").Rows(i)("strElementValue") & ""
strElementValue = strElementValue.Trim
Select Case strElementType
Case "value"
vdoc2.all.item(strElementName).value = strElementValue
Case "frame" Case "file"
SetForegroundWindow(Me.Handle.ToInt64)
strFileElementName = strElementName
strFileElementValue = strElementValue
Me.strElementType = strElementType
vdoc2.all.item(strElementName).focus()
SendKeys.Send(strElementValue)
Case "checked"
vdoc2.all.item(strElementName).checked = strElementValue
Case "select"
Dim nOption As Integer
For nOption = 0 To vdoc2.all.item(strElementName).Options.length() - 1
If vdoc2.all.item(strElementName).Options(nOption).Text = strElementValue Then
vdoc2.all.item(strElementName).Options(nOption).Selected = True
End If
Next nOption
Case "click"
strClickElementName = strElementName
End Select
List1.Items.Add(strElementName)
Next i
bFillFinished = True
End Sub本人调试通过,而且是通过读数据库内容自动填写并提交
If p_bFirstOpen Then
p_bFirstOpen = False
AxWebBrowser1.Navigate(p_strIssueTargetAddr)
End If
If (strElementType = "file") Then
SetForegroundWindow(Me.Handle.ToInt64)
'BringWindowToTop(Me.Handle.ToInt64)
'SetFocusAPI&(Me.Handle.ToInt64)
If strFileElementValue <> vdoc2.all.item(strFileElementName).value Then
vdoc2.all.item(strFileElementName).focus()
AxWebBrowser1.Navigate(AxWebBrowser1.LocationURL)
SendKeys.Send(strFileElementValue)
Exit Sub
End If
End If
If bFillFinished Then
If (p_nCurrPage < p_nPageCount) Then
If strTextAreaElementName = "" Then
vdoc2.all.item(strClickElementName).click()
End If p_nCurrPage = p_nCurrPage + 1
bFillFinished = False
If (p_nCurrPage = p_nPageCount) And strTextAreaElementName = "" Then
p_bFinished = True
End If
End If
End If
End Sub
加上这一段可以自动上传文件。