我正在尝试开发一个必须与网页交互的应用程序。
我使用内置的网络浏览器填写第一个表单并提交。这里没问题。
单击此表单时,该页面会在同一页面上加载不同的 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 时使用单线程,但这似乎不是问题(我在单线程上尝试过,文档也没有改变)