3

我正在尝试自动化一个需要重复单击按钮的 Web 进程。当我的代码“单击”该按钮(从表单上的 WebBrowser 控件获得的 HtmlElement)时,它会将焦点带回我的应用程序,更具体地说是 WebBrowser 控件。我希望更好地自动化这个过程,以便用户可以在过程进行时做其他事情,但是如果窗口因为它获得焦点而使其自身最小化,则不会发生这种情况。

与点击相关的代码是:

HtmlElement button = Recruiter.Document.GetElementById("recruit_link");
button.InvokeMember("click");

我也试过 button.RaiseEvent("onclick") 并得到完全相同的结果,但焦点问题等等。

我也尝试过隐藏表单,但是当调用 InvokeMember/RaiseEvent 方法时,我正在处理的任何事情都会失去焦点,但由于表单不可见,所以焦点似乎无处可去。

webbrowser 唯一的非默认设置是它的 URI 被设置为我的页面并且 ScriptErrorsSuppressed 被设置为 True。

4

2 回答 2

1

在 IE7 或更高版本中,您可以在 webbrowser 站点上实现 IProtectFocus 并拒绝焦点更改。如果您使用支持这种自定义的原始 ActiveX 或其包装器,例如csexwb ,您的情况会好得多。如果必须使用winform webbrowser 控件,则需要创建自己的webbrowser 站点

于 2010-03-01T20:59:58.110 回答
1

为什么你需要点击这个按钮?它正在发送一些表格?如果是,您可以使用WebClient和模拟没有图形界面的发送表单。

基本上几乎任何重要的东西都需要连接到网站使用Get Postmultipart/post这样就很WebClient完美了。您可以简单地获取此按钮所在的站点并对其进行解析以了解单击它的作用。然后模拟自己的动作。

于 2010-04-29T15:38:34.797 回答