在webbrowser或watin中捕获用户活动
本文关键字:用户 活动 webbrowser watin | 更新日期: 2023-09-27 18:20:33
是否有任何方法可以检测WebBrowser中所有可能的用户活动并返回自定义事件?例如:用户点击"搜索"按钮,返回"SearchButtonClicked"自定义事件。
它将类似于记录用户所做的所有活动,存储在一个序列中,并且可以在他想要的时候自动进行。
编辑:我不拥有这个网页。我正在尝试制作一个应用程序来自动在谷歌上进行一些搜索。
经过一番研究,我发现了HtmlElementEventHandler
。
示例:
webBrowser1.Document.GetElementById("MainContent_LoginButton").Click += new HtmlElementEventHandler(test);
// some code...
public void test(object sender, HtmlElementEventArgs e)
{
MessageBox.Show("Clicked login button");
}
哇,这将是一个带宽密集型应用程序…:)例如,您可以考虑使用像jQuery这样的框架将事件附加到所有锚点和按钮类型的输入,以执行对服务器的AJAX调用。因此,你可能会有以下过程:
在你的所有页面上包含一个JS文件,以执行以下操作:
$(document).ready(function () {
var trackUserActivity = function(elementId, elementText) {
$.ajax({
type: "POST",
url: "url/TrackUserActivity",
contentType: "application/json; charset=utf-8",
dataType: "json",
data: JSON.stringify({
ElementId: elementId,
ElementText: elementText
}),
success: function (result) {
// do something if call was successful
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
// do something if an error occurred
}
});
};
$("a, input[type='"button'"], input[type='"submit'"]").click(function() {
trackUserActivity($(this).attr("id"), $(this).text());
});
});
创建一个可以通过AJAX调用的Web方法来跟踪用户活动:
[WebMethod]
public static void TrackUserActivity(string ElementId, string ElementText)
{
// Implement your user activity tracking logic, like saving it in a database
}
在您的OP编辑之后,您不拥有该应用程序,因此这将不起作用。我在这里为将来可能有类似需求的人保留答案。
请参阅HtmlElementEventHandler的类型:http://msdn.microsoft.com/en-us/library/system.windows.forms.htmlelement_events%28v=vs.110%29.aspx
使用此事件处理程序来了解发生的事件。发生事件时,获取元素详细信息、标记详细信息,并使用事件类型登录到文件中。
请参阅使用HtmlElementEventHandler时所需的下转换用法http://www.hanselman.com/blog/BackToBasicsThisIsNotTheObjectYoureLookingwaitOhItIsTheObject.aspx.
当您想要回放操作时,可以在提取标记名称和值字段后按顺序运行记录的事件。