2010-12-12 2 views
0

en utilisant le navigateur web GeckoFX, est-il possible de passer GeckoElement par JavaScript comme celui-ci,Passe GeckoFX éléments DOM à la navigation JavaScript appelle

WebBrowser.Navigate("javascript:void("+ele.DomObject+".onclick())"); 

je sélectionne l'élément DOM via JavaScript (ceci fonctionne très bien) atm , mais j'ai l'élément en C#.

Répondre

1

Malheureusement, les éléments ne peuvent pas être passés à javascript comme ça. Toutefois, l'appel WebBrowser.Navigate est inutile et entraîne une perte inutile des variables de page. Par souci d'exhaustivité, j'ai posté un extrait - long pour cette occasion;) - qui injecte javascript, puis l'appelle à partir d'un clic automatisé sur un bouton via un gestionnaire button.click() sans avoir à naviguer le navigateur pour exécuter tout cela.

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

Je ne suis pas sûr que cet extrait vous aidera, directement, car il est principalement axé sur l'utilisation de la construction GFXe du contrôle, mais je suis sûr que vous pointera dans une meilleure direction que le

WebBrowser.Navigate ("javascript: hack.goesHere()"); tour.

+1

Wicked. Je cherche actuellement à lancer le DOM GeckoFX sélectionné sur un DOM orienté JS amical, et cette méthode est beaucoup mieux que le hack de navigation que j'ai utilisé. Je vais devoir tester cette méthode, merci Scott. – brokkc

0

Vous pouvez le faire avec les éléments suivants:

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