¿Cómo obtener el valor real de JavaScript en onclick desde el control del navegador web?
Estoy buscando una forma de obtener el código JavaScript definido dentro de onclick. Estoy usando .NET 2.0 C # Visual Studio 2005.
Ejemplo
<span id="foo" onclick+"window.location.href='someURL'>click here</span>
Mi objetivo es obtener la cadena "window.location.href = 'someURL'".
Guión
Un usuario hace clic en el elemento de la página web, la etiqueta que se muestra arriba, por ejemplo, dentro del control WebBrowser. Luego, la etiqueta en la que se hace clic se remite a HtmlElement object
.
En el control WebBrowser, llamo aHtmlElement object's getAttribute("onclick")
, solo me da "System .__ ComObject ".
He buscado cómo lidiar con eso, luego descubrí que se puede lanzar y luego obtener el valor.
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);
}
Salida
dom elem >>>>>>>>>>> mshtml.HTMLSpanElementClass
js value ===> System.__ComObject
Como se muestra, span.onclick todavía me da Sistema .__ ComObject, ¿qué estoy haciendo mal?
In ¿Por qué el método GetAttribute () de HtmlElement devuelve "mshtml.HTMLInputElementClass" en lugar del valor del atributo? este tipo dijo que funcionó en su caso, y lo seguí, pero el mío no funciona ...
ACTUALIZA
Investigación, investigación .....
Puedo agregar el VisualBasic.dll de referencia a mi proyecto C # y luego llamar al método para averiguar quién es este sistema .__ ComObject realmente es.
Console.WriteLine(Microsoft.VisualBasic.Information.TypeName(span.onclick));
Salida
JScriptTypeInfo
Parece que este es un tipo JScript ... ¿cómo puedo acceder a este objeto?
Mas detall
La descripción anterior se basa en mi proyecto actual. El proyecto es crear algo como Selenium IDE. Utiliza el control WebBrowser en su lugar.
Selenium IDE crea 3 cosas diferentes para registrar un elemento en el documento web.
1. actionType
2. xpath
3. value
Por ejemplo
type, //input[@id=foo], "hello world"
clickAndWait, //link=login, ""
Selenium IDE reconoce la carga de la página para que cambie actionType entre"click"
y"clickAndWait"
. Mi caso, quiero hacerlo simple.
Si hago clic en el elemento y si esanchor tag
o tiene JavaScript de carga de página comoonclick=window.location.href='blah'
entonces quiero establecer el tipo de acción en"clickAndWait"
.