我正在尝试开发一个必须与网页互动的应用。
我使用内置的webbrowser填写第一个表单并提交。这里没问题。
单击此表单时,页面会加载不同的html代码(表单上的第二步),并显示相同的页面。它不会触发文档已完成的事件,更糟糕的是,它不会更改文档项。 documenttext项具有新代码,页面在表单上完美显示,但文档项仍保留旧代码。没有文件,我无法点击第二个按钮。
所以,2个问题。
有没有办法强制文档加载新的html代码,以便我可以点击它?
有没有办法点击该按钮而不使用Htmlelement.InvokeMember?
Private Sub login()
Browser.Navigate("website")
docflag.WaitOne()
docflag.Reset()
Dim inputs As HtmlElementCollection = document.GetElementsByTagName("input")
Dim login As HtmlElement = Nothing
For Each item As HtmlElement In inputs
Select Case item.Id
Case "nick"
item.SetAttribute("value", TBUsuario.Text)
Case "pass"
item.SetAttribute("value", TBPass.Text)
Case ""
Dim src As String = item.GetAttribute("src")
If src.IndexOf("/login.gif") <> -1 Then
login = item
End If
End Select
Next
Conecta(True)
login.InvokeMember("click")
docflag.WaitOne()
docflag.Reset()
'msg(document.Body.OuterHtml) returns code of the first page
'msg(document.documenttext) returns code of the actual page
document.GetelementById("identrar" + TBCodigo.Text).InvokeMember("click")
docflag.WaitOne()
docflag.Reset()
End Sub
Private Sub Browser_DocumentCompleted(sender As Object, e As WebBrowserDocumentCompletedEventArgs) Handles Browser.DocumentCompleted
document = Browser.Document
docflag.Set()
msg("Pagina cargada")
End Sub
编辑包含一些代码。我在尝试解决这个问题的同时阅读,我在使用webbrowser时应该使用单个线程,但这似乎不是问题(我在单个线程上尝试过它,文档也没有改变)
答案 0 :(得分:0)
首先使用webbrowser.Navigate("about:blank");