2009-05-20 115 views
0

我正在通过C#和WebBrowser进行一些Web自动化。有一个我需要'点击'的链接,但是因为它激发了一个Javascript函数,显然这个代码需要被执行,而不是仅仅点击元素(即element.InvokeMember(“click”))。下面是为元素,这将打开一个Ajax形式在href:如何从C#WebBrowser执行Javascript函数?

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

我已经试过:

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

和:

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

和其他一些东西。代码被击中,但脚本不会被解雇。任何想法将不胜感激。

格雷格

BTW这里的情况下完整的元素是非常有用:

<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> 

回答

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");