3

我正在学习 WatiN API,但遇到了一个问题。

我将 WatiN api 与WebBrowser对象/控件一起使用,它在大多数情况下都很好用。我正在尝试使用 API 在 google 中进行搜索,但 Button 没有按应有的方式单击。

我什至使用来自 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 回答