2010-12-12 73 views

回答

1

不幸的是元素不能像這樣傳遞給JavaScript。

但是,WebBrowser.Navigate調用是不必要的,並且會導致不必要的頁面變量丟失。

爲了完整起見,我已經發布了一個片段 - 爲這個場合囉嗦;) - 注入JavaScript,然後通過button.click()處理程序從自動按鈕點擊調用它,而無需導航瀏覽器運行它。

DOM.GeckoScriptElement script = Document.CreateElement("script").AsScriptElement(); 
script.Type = "text/javascript"; 
script.Text = "function doAlert(){ alert('My alert - fired by automating a button click on the [Automated Button]'); }"; 
Document.Body.AppendChild(script); 

script = Document.CreateElement("script").AsScriptElement(); 
script.Type = "text/javascript"; 
script.Text = "function callDoAlert(id){ var el = document.getElementById(id); el.click(); }"; 
Document.Body.AppendChild(script); 

DOM.GeckoInputElement button = Document.CreateElement("input").AsInputElement(); 
button.Type = "button"; 
button.Id = "myButton"; 
button.Value = "Automated Button"; 
button.SetAttribute("onclick", "javascript:doAlert();"); 

Document.Body.AppendChild(button); 

DOM.GeckoInputElement button2 = Document.CreateElement("input").AsInputElement(); 
button2.Type = "button"; 
button2.Id = "myOtherButton"; 
button2.Value = "Press Me"; 
button2.SetAttribute("onclick", "javascript:document.getElementById('myButton').click();"); 

Document.Body.AppendChild(button2); 

//uncomment to fully automate without the <webbrowser>.Navigate("javascript:.."); hack 
//button2.click(); 

我不知道這個片段會幫助你,直接,因爲它主要集中在使用GFXe構建的控制,但是,我敢肯定,這將指向您在比

更好的方向發展

WebBrowser.Navigate(「javascript:hack.goesHere()」);招。

+1

妖獸。目前我正在將選定的GeckoFX DOM投射到一個JS友好的可移動DOM上,並且這種方法比我一直使用的導航黑客好得多。我必須測試這個方法,謝謝斯科特。 – brokkc 2010-12-25 01:12:15

0

您可以用下面這樣做:

WebBrowser.Navigate("javascript:void(document.getElementById('"+button.Id+"').click())");