我的WPF浏览器有问题。我想加载一个网页。 等待它完全加载,然后输入少量搜索输入,然后检索结果并将其放入excel中。
我无法这样做,主程序加载并在加载pagecomplete_event之前完成执行。场景是:
我用WinForms完成了这项工作,效果很好。问题是调用DOEVENTS
。它有时会使我的程序挂起,特别是如果在一个大的列表上运行。所以想在WPF中做到这一点。
我已经发布了Load_Complete
事件,但正如我所提到的那样,在主程序完成之后事件发生了。
我搜索了这个链接:How to create and use WebBrowser in background thread。但它似乎没有帮助 - 在WPF中似乎没有System.Windows.Deployment
- 我得到了红色波浪形的下划线。我找到的其他解决方案似乎也无济于事。
答案 0 :(得分:0)
这让我困扰了一段时间,终于找到了解决方案。现在我对vb.net相当新,所以这可能不是最好的方式,但确实有效。这是在vb.net中,您可以轻松转换为c#。
AddHandler (webbrowser1.LoadCompleted), AddressOf WebpageLoaded
webbrowser1.Navigate("http://www.myWebsite.net/admin/")
这会创建一个触发WebpageLoaded子的事件。
我用它来等待页面加载然后登录我的帐户。 我就是这样做的。
Private Sub WebpageLoaded()
If webbrowser1.Url.ToString = "http://www.myWebsite.net/admin/" Then
webbrowser1.Document.GetElementById("username").ScrollIntoView(True)
webbrowser1.Document.GetElementById("username").SetAttribute("value", "myUsername")
webbrowser1.Document.GetElementById("password").SetAttribute("value", "myPassword")
End If
End Sub
我希望这会有所帮助。您可能不需要ScrollIntoView我只是使用它来查看进度,因为我终于让它工作了。