3

私はWatiN APIを学んでいますが、問題が発生しました。

WebBrowserオブジェクト/コントロールでWatiN APIを使用していますが、ほとんどの場合うまく機能します。APIを使用してGoogleで検索しようとしていますが、ボタンがクリックされません。

私はWatiNサイトの同じコードを使用しています(わずかな違いがあります):私のコード:

//need to use a thread to work with the WebBrowser object
var thread = new Thread(() =>
{
    Settings.AutoStartDialogWatcher = false;

    using (IE browser = new IE(webBrowser1.ActiveXInstance))
    {
         browser.GoTo("http://www.google.co.il");
         browser.TextField(Find.ByName("q")).Value = " woowow";
         browser.Button(Find.ByName("btnG")).Click();
    }
});
thread.SetApartmentState(ApartmentState.STA);
thread.Start();

追加するテキストを設定できますが、ボタン"btnG"がクリックされません。

WebBrowserオブジェクト/コントロールなしでこのコードを使用すると、コードは正常に動作します。

4

1 に答える 1

7

私は問題を見つけました。

フォーカスをサイトに変更する必要がありました。

このコード行は機能します:

 browser.NativeDocument.Body.SetFocus();

コードは次のようになります。

Settings.AutoStartDialogWatcher = false;

            browser = new IE(webBrowser1.ActiveXInstance);

                browser.GoTo("http://www.google.co.il");
                browser.TextField(Find.ByName("q")).Value = " woowow";

                browser.NativeDocument.Body.SetFocus(); // set focus befor u click

                browser.Button(Find.ByName("btnG")).Click();


        });
        thread.SetApartmentState(ApartmentState.STA);
        thread.Start();
于 2012-08-31T12:59:29.203 に答える