Я ищу способ получить код JavaScript, определенный внутри onclick. Я использую .NET 2.0 С# Visual Studio 2005.
Пример:
<span id="foo" onclick+"window.location.href='someURL'>click here</span>
Моя цель - получить строку "window.location.href= 'someURL'" .
Сценарий:
Пользователь нажимает элемент веб-страницы, например, тег, показанный выше, внутри элемента управления WebBrowser. Затем тег с щелчком ссылается на H tmlElement object
.
В элементе управления WebBrowser я вызываю HtmlElement object getAttribute("onclick")
, он просто дает мне " System.__ 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" вместо значения атрибута? этот парень сказал, что это сработало в его случае, и я последовали за ним, но моя несколько не работает...
UPDATE
Исследования, исследования.....
Я могу добавить ссылку VisualBasic.dll в мой проект С#, а затем вызвать метод, чтобы узнать, кто является этой Системой.__ 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 распознает загрузку страницы, чтобы она изменяла тип действия между "click"
и "clickAndWait"
. В моем случае я хочу сделать это простым.
Если я нажму на элемент и если он anchor tag
или имеет тип загрузки страницы javascript
например onclick=window.location.href='blah'
, тогда я хочу установить для actionType значение "clickAndWait"
.