,有沒有可能通過JavaScript這樣傳遞一個GeckoElement,通GeckoFX DOM元素的JavaScript導航使用GeckoFX網頁瀏覽器調用
WebBrowser.Navigate("javascript:void("+ele.DomObject+".onclick())");
我選擇通過JavaScript自動櫃員機(這工作正常)的DOM元素,但我有在C#中的元素。
,有沒有可能通過JavaScript這樣傳遞一個GeckoElement,通GeckoFX DOM元素的JavaScript導航使用GeckoFX網頁瀏覽器調用
WebBrowser.Navigate("javascript:void("+ele.DomObject+".onclick())");
我選擇通過JavaScript自動櫃員機(這工作正常)的DOM元素,但我有在C#中的元素。
不幸的是元素不能像這樣傳遞給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()」);招。
您可以用下面這樣做:
WebBrowser.Navigate("javascript:void(document.getElementById('"+button.Id+"').click())");
妖獸。目前我正在將選定的GeckoFX DOM投射到一個JS友好的可移動DOM上,並且這種方法比我一直使用的導航黑客好得多。我必須測試這個方法,謝謝斯科特。 – brokkc 2010-12-25 01:12:15