Как получить фактическое значение JavaScript в onclick из элемента управления веб-браузером?

Я ищу способ получить код JavaScript, определенный внутри onclick. Я использую .NET 2.0 C # Visual Studio 2005.

Пример:

click here

Моя цель - получить строку "window.location.href = 'someURL'" .

Сценарий:

Пользователь нажимает на элемент веб-страницы,показанный выше тег, например, внутри элемента управления WebBrowser. Затем тег clicked ссылается на объект H tmlElement .

В элементе управления WebBrowser я затем вызываю getAttribute ("onclick") объекта объекта HtmlElement, он просто дает мне " Система .__ ComObject ".

Я искал, как с этим бороться, затем обнаружил, что его можно преобразовать, а затем получить значение.

if (tag.GetAttribute("onclick").Equals("System.__ComObject"))
{
    Console.WriteLine("dom elem  >>>>>>>>>>> " + tag.DomElement.ToString());
    mshtml.HTMLSpanElementClass span = (mshtml.HTMLSpanElementClass)tag.DomElement;

    Console.WriteLine("js value ===>" + span.onclick);
}

Вывод:

dom elem  >>>>>>>>>>> mshtml.HTMLSpanElementClass
js value ===> System.__ComObject

Как показано, span.onclick все еще дает мне System .__ ComObject, что я делаю не так?

В Почему метод HtmlElement GetAttribute () возвращает «mshtml.HTMLInputElementClass» вместо значения атрибута? этот парень сказал, что в его случае это сработало, и я следил за ним , но у меня что-то не работает ...

ОБНОВЛЕНИЕ

Исследование, исследование .....

Я могу добавить ссылку на VisualBasic.dll в свой проект C #, а затем вызвать метод, чтобы узнать, кто эта Система .__ ComObject действительно есть.

Console.WriteLine(Microsoft.VisualBasic.Information.TypeName(span.onclick));

Вывод:

JScriptTypeInfo

Похоже, это тип JScript ... как я могу получить доступ к этому объекту?

Подробнее

Приведенное выше описание основано на моем текущем проекте. Проект заключается в создании чего-то вроде Selenium IDE. Вместо этого он использует элемент управления WebBrowser.

Selenium IDE создает 3 разных объекта для записи элемента в веб-документ.

1. actionType
2. xpath
3. value

Например,

type, //input[@id=foo], "hello world"
clickAndWait, //link=login, ""

Selenium IDE распознает загрузку страницы, поэтому она меняет тип действия между «щелчок» и «clickAndWait» . Мой случай, я хочу сделать его простым.

Если я нажимаю на элемент, и если это тег привязки или страница загружается в виде javascript например onclick = window.location.href = 'blah' , тогда я хочу установить actionType на «clickAndWait» .

13
задан Community 23 May 2017 в 11:48
поделиться