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 でブラウザ インスタンスを使用しようとすると、th スレッド内で宣言されているため、それが何であるかわからないと表示されます。を介して LoginPageLoaded を実行したときは実行しませんでしたbrowser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(LoginPageLoaded);。明らかに、その STAThread の外部でブラウザーを宣言することはできません。これを修正するために何ができると思いますか?

編集-私はひどく失敗しました...そのSTAthread内で必要なすべてを実行すると、すべてが機能します。私の質問は、実際にウェブブラウザの視覚的コンポーネントを持たずに「ウェブブラウザ」を開く方法はありますか?

4

4 に答える 4

0

NHtmlUnitを使ってみることができます。これはヘッドレスブラウザです。WatiNでできるかどうかわかりません。

于 2012-05-24T18:10:40.327 に答える
0

Webブラウザウィンドウを非表示にしたいのではないでしょうか。その場合はこれを試してください:

Settings.Instance.MakeNewIeInstanceVisible = false;
于 2012-05-27T05:21:24.267 に答える
0

WebKit をヘッドレスで実行できますが (たとえばhttp://phantomjs.org/を参照)、WatiN から実行できるかどうかはわかりません。

于 2012-05-24T18:30:19.817 に答える
0

実際に Web ブラウザのビジュアル コンポーネントを持たずに「Web ブラウザ」を開くには、次を使用します。

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