Я ищу способ получить код 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»
.