Я ищу способ получить код JavaScript, определенный внутри onclick.Я использую .NET 2.0 C # 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's 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, что я делаю не так?
В Почему метод GetAttribute () из HtmlElement возвращает «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 распознает загрузку страницы, поэтому она изменяет actionType между "click"
и "clickAndWait"
.Мой случай, я хочу сделать это просто.
Если я нажимаю на элемент и если он anchor tag
или имеет тип загрузки javascript, такой как onclick=window.location.href='blah'
, тогда я хочу установить для actionType значение "clickAndWait"
.