.net Webbrowser.document不会更新
我正在尝试开发一个必须与网页交互的应用程序 我使用内置的webbrowser来填写第一张表格并提交。没问题 单击此表单时,页面将加载不同的html代码,这是在具有相同页面的表单上执行的第二步。它不会触发document completed事件,更糟糕的是,它不会更改文档项。documenttext项具有新代码,页面在表单上完美显示,但document项仍保留旧代码。没有文档,我无法单击第二个按钮 所以,有两个问题 有没有办法强制文档加载新的html代码,这样我就可以单击它 有没有办法不使用Htmlelement.InvokeMember单击该按钮.net Webbrowser.document不会更新,.net,visual-studio,.net,Visual Studio,我正在尝试开发一个必须与网页交互的应用程序 我使用内置的webbrowser来填写第一张表格并提交。没问题 单击此表单时,页面将加载不同的html代码,这是在具有相同页面的表单上执行的第二步。它不会触发document completed事件,更糟糕的是,它不会更改文档项。documenttext项具有新代码,页面在表单上完美显示,但document项仍保留旧代码。没有文档,我无法单击第二个按钮 所以,有两个问题 有没有办法强制文档加载新的html代码,这样我就可以单击它 有没有办法不使用Htm
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时,我应该使用一个线程,但这似乎不是问题。我在一个线程上尝试过,文档也没有改变。首先使用webbrowser。Navigateabout:blank 我真的做不到。也许我没有解释清楚。我加载第一个页面,然后使用item.invokemember,然后加载第二个页面。如果我在中间加载:blank,我将无法调用它。到目前为止,您尝试了什么?你能提供一些没有按你想要的方式工作的示例代码吗?编辑以包含一些代码。现在我完全迷路了,因为我看到的使用此元素的唯一替代选项是自己发送post消息,这会很快变得混乱——你不能在UI线程上调用WaitOne。阻止UI线程可防止触发DocumentCompleted事件。您的代码需要移动到DocumentCompleted事件。使用变量跟踪状态。我不会在ui线程中调用Waitone。子登录在不同的线程中工作。代码运行良好,我可以加载每个页面。问题是,当页面上有可变内容时,我会得到一个名为variable content的空div的初始代码,文档不会改变以反映任何更改,因此我不能使用variable content divEditing中声明的任何元素来表示解决的不是StackOverflow的工作方式。如果你自己已经找到了一个解决方案,你应该把它作为一个答案发布。在这里回答你自己的问题是非常好的,并且在关于发布答案的部分中提到了这一点。你甚至可以认为自己的答案是正确的。这两个方面你都不会赢得任何声誉,但它清楚地表明你已经找到了一个解决方案,并提供给未来的读者。出于这个原因,我正在回滚您上次的编辑。