在webbrowser或watin中捕获用户活动

本文关键字:用户 活动 webbrowser watin | 更新日期: 2023-09-27 18:20:33

是否有任何方法可以检测WebBrowser中所有可能的用户活动并返回自定义事件?例如:用户点击"搜索"按钮,返回"SearchButtonClicked"自定义事件

它将类似于记录用户所做的所有活动,存储在一个序列中,并且可以在他想要的时候自动进行。

编辑:我不拥有这个网页。我正在尝试制作一个应用程序来自动在谷歌上进行一些搜索。

在webbrowser或watin中捕获用户活动

经过一番研究,我发现了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.

当您想要回放操作时,可以在提取标记名称和值字段后按顺序运行记录的事件。