2009-05-20 6 views
0

Je fais de l'automatisation Web via C# et un WebBrowser. Il y a un lien que je dois "cliquer", mais comme il déclenche une fonction Javascript, apparemment le code doit être exécuté plutôt que d'avoir simplement cliqué sur l'élément (c'est-à-dire element.InvokeMember ("click")). Voici le href de l'élément, qui ouvre une forme Ajax:Comment exécuter une fonction Javascript à partir d'un C# WebBrowser?

javascript:__doPostBack("ctl00$cphMain$lnkNameserverUpdate", "") 

J'ai essayé:

webBrowser1.Document.InvokeScript("javascript:__doPostBack", new object[] { "ctl00$cphMain$lnkNameserverUpdate", "" }); 

et:

webBrowser1.Document.InvokeScript("__doPostBack", new object[] { "ctl00$cphMain$lnkNameserverUpdate", "" }); 

et quelques autres choses. Le code est touché, mais le script ne se déclenche pas. Toutes les idées seraient très appréciées.

Gregg

BTW Voilà l'élément complet dans le cas où il est utile:

<a href="javascript:__doPostBack('ctl00$cphMain$lnkNameserverUpdate','')" onmouseout="window.status=''; return true" onmouseover="window.status='Update Nameservers'; return true" id="ctl00_cphMain_lnkNameserverUpdate" onclick="javascript:Layout.ChangeIframeToSrc('DropinLoad_Domain.aspx?controlRequest=ActionNameserversWithIP');return false;">NS51.DOMAINCONTROL.COM<br/>NS52.DOMAINCONTROL.COM<br/></a> 

Répondre

0
HtmlDocument doc = browser.Document; 
HtmlElement head = doc.GetElementsByTagName("head")[0]; 
HtmlElement s = doc.CreateElement("script"); 
s.SetAttribute("text","function sayhello() { alert('hello'); }"); 
head.AppendChild(s); 
browser.Document.InvokeScript("sayHello"); 
Questions connexes