1

我目前正在尝试使用 WatiN 进行一些自动数据收集。我曾经使用 WebBrowser 控件,我这样做的方式是我声明了一个 stathread 并从那里运行它,然后使用 Browser.DocumentCompleted 我启动了一个void LoginPageLoaded我将设置用户并通过并登录的。事情是,有了 WatiN,我正在尝试做

var th = new Thread(() =>
    {
    Browser browser = new IE(url);
    browser.WaitForComplete();
    HolyThunder hl = new HolyThunder();
    l.LoginPageLoaded();
    });
    th.SetApartmentState(ApartmentState.STA);
    th.Start();

但很明显,当我尝试在 LoginPageLoaded void 上使用浏览器实例时,它说它不知道它是什么,因为它是在线程内部声明的。当我运行 LoginPageLoaded through 时我没有这样做browser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(LoginPageLoaded);,而且我显然不能在那个 STAThread 之外声明浏览器。你认为我能做些什么来解决这个问题?

编辑 - 我失败得很糟糕......如果我在那个 STAthread 中做我需要做的一切,一切都会奏效。我现在的问题是,在 watin 中,是否有打开“webbrowser”而实际上没有 webbrowser 的可视组件?

4

4 回答 4

0

您可以尝试使用 NHtmlUnit,它是一个无头浏览器。我不确定你是否可以用 WatiN 做到这一点。

于 2012-05-24T18:10:40.327 回答
0

You can run WebKit headless (see, for example http://phantomjs.org/), but I don't know if you can drive it from WatiN.

于 2012-05-24T18:30:19.817 回答
0

要打开“webbrowser”而不实际拥有 webbrowser 的可视组件,请使用

var browser = new IE();
browser.Visible = false;
于 2012-12-13T21:45:20.280 回答
0

我猜你想隐藏网络浏览器窗口。在这种情况下,试试这个:

Settings.Instance.MakeNewIeInstanceVisible = false;
于 2012-05-27T05:21:24.267 回答