我正在学习WatiN API,但我遇到了问题。
我使用带有WebBrowser
对象/控件的WatiN api,它在大多数情况下都很有用。
我试图在谷歌搜索API,但按钮没有按照它应该点击。
我甚至使用来自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
对象/控件的代码时,代码工作正常。
答案 0 :(得分: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();