与webbrowser WatiN

时间:2010-09-14 20:22:43

标签: .net vb.net browser watin

我正在使用以下代码将watin绑定到winform上的webbrowser。

Dim w As IE = New IE(WebBrowser1.ActiveXInstance)
Settings.AutoStartDialogWatcher = False
w.GoTo("http://google.com")

我可以从wireshark看到页面被加载,但表单被冻结,直到异常被抛出“Internet Explorer忙碌时超时”。

有没有办法将watin绑定到webbrowser控件?

2 个答案:

答案 0 :(得分:2)

首先,我认为这一行:

Settings.AutoStartDialogWatcher = False

应该在创建IE实例之前的开头。

如果您在单独的线程中运行它,您的代码将会起作用。

C#中的代码(抱歉):

var thread = new Thread(() =>
{
    Settings.AutoStartDialogWatcher = false;
    var ie = new IE(webBrowser1.ActiveXInstance);
    ie.GoTo("http://www.google.com");
});
thread.SetApartmentState(ApartmentState.STA);
thread.Start();

答案 1 :(得分:0)

如果我使用此代码,则可以使用

ie = New IE(WebBrowser1.ActiveXInstance)
ie.GoToNoWait("http://google.com")
While WebBrowser1.ReadyState <> WebBrowserReadyState.Complete
  Application.DoEvents()
End While

如果它不是最好的解决方案,但它对我有用