поймать активность пользователя в веб-браузере или watin - PullRequest
2 голосов
/ 18 января 2012

Есть ли способ обнаружить все возможные действия пользователя в WebBrowser и вернуть пользовательское Событие ? Например: пользователь нажимает на кнопку «поиск», возвращает пользовательский «SearchButtonClicked» Событие .

Это было бы что-то вроде регистрации всех действий, которые пользователь выполняет, сохраненных в последовательности и может быть автоматизирован, когда он захочет.

Редактировать: мне не принадлежит веб-страница. Я пытаюсь создать приложение для автоматизации поиска в Google.

Ответы [ 3 ]

3 голосов
/ 24 января 2012

После некоторых исследований я обнаружил HtmlElementEventHandler.

Пример:

webBrowser1.Document.GetElementById("MainContent_LoginButton").Click += new HtmlElementEventHandler(test);

// some code...

public void test(object sender, HtmlElementEventArgs e)
{
    MessageBox.Show("Clicked login button");
}
3 голосов
/ 18 января 2012

Ничего себе, это будет довольно интенсивное использование полосы пропускания ... :) Вы можете рассмотреть такую ​​среду, как jQuery, чтобы прикреплять события ко всем якорям и вводам типа кнопок, например, для выполнения вызовов AJAX на вашем сервере. Таким образом, вы можете иметь что-то вроде следующего процесса:

1) Включите файл 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());
    });
});

2) Создайте веб-метод, который можно вызывать через AJAX для отслеживания активности пользователя:

[WebMethod]
public static void TrackUserActivity(string ElementId, string ElementText)
{
    // Implement your user activity tracking logic, like saving it in a database
}

БОЛЬШОЕ ВАЖНОЕ РЕДАКТИРОВАНИЕ: Что ж, учитывая, что после редактирования OP у вас нет приложения, это не будет работать. Я держу ответ здесь для кого-то в будущем, у кого может быть подобная потребность, поэтому, пожалуйста, не понижайте голосование, основанное на том, что он не обращается к OP определенно.

0 голосов
/ 07 февраля 2014

См. Типы HtmlElementEventHandler : http://msdn.microsoft.com/en-us/library/system.windows.forms.htmlelement_events%28v=vs.110%29.aspx

Используйте этот обработчик событий, чтобы знать, что произошло событие.В случае произошедшего получите информацию об элементе, отметьте детали и войдите в файл с типом события.

См. Использование downcasting, необходимое при использовании HtmlElementEventHandler http://www.hanselman.com/blog/BackToBasicsThisIsNotTheObjectYoureLookingwaitOhItIsTheObject.aspx.

Когда вы хотите воспроизвести действие, вы можете запустить зарегистрированные события в последовательности,после извлечения полей имени и значения тега.

...