2009-02-25 7 views
1

J'essaie d'analyser/soumettre automatiquement une page Web en utilisant MSHTML (dans le contrôle C# .Net 3.1 WPF WebBrowser). Je peux remplir les formulaires, cliquer sur les boutons et naviguer dans les pages sans problèmes.MSHTML - Clic automatique pour la boîte de dialogue de confirmation JavaScript

Mais je ne sais pas comment cliquer automatiquement sur le bouton "OK" de la boîte de dialogue de confirmation JavaScript qui apparaît lorsque je clique sur le bouton "Soumettre".

code C#:

mshtml.IHTMLDocument2 doc = (mshtml.IHTMLDocument2)webBrowser.Document; 
mshtml.IHTMLFormElement form = doc.forms.item("inputForm", 0) as mshtml.IHTMLFormElement; 
mshtml.IHTMLElement btnSubmit = form.item("btnFormSubmit", null) as mshtml.IHTMLElement; 
btnSubmit.click(); 

La boîte de dialogue de confirmation ("Êtes-vous sûr") apparaît. Je veux en quelque sorte envoyer une touche "Entrée" au document MSHTML pour confirmer automatiquement la soumission.

Répondre

0

Étant donné que le contrôle WebBrowser est une boîte noire, vous devez probablement rechercher un handle pour la boîte de dialogue via l'API Win32. De là, vous pouvez appeler le bouton 'OK'. Désolé, je ne peux pas être plus précis que cela, car je n'ai jamais fait ce genre de chose auparavant. Espérons que cela suffira à vous faire avancer dans la bonne direction.

+0

Merci. Je suis à la recherche d'un moyen plus simple de cliquer sur le bouton Ok sur la boîte de dialogue de confirmation en utilisant MSHTML et le contrôle WebBrowser. Je peux cliquer n'importe quoi mais cette fenêtre de dialogue ennuyante. Je dois d'une manière ou d'une autre envoyer la touche "Entrée" au document HSHTML en utilisant Javascript –

+0

Vous ne pouvez pas faire cela en utilisant JavaScript - voir cette réponse: http://stackoverflow.com/questions/563890/is-there-a-simulate -a-click-on-an-alert-in-javascript/563905 # 563905 ... confirme fonctionne de la même manière. C'est pourquoi je suggère l'API Win32. –

1

J'ai finalement trouvé le moyen de supprimer le message de confirmation dans le contrôle WebBrowser. Il est en fait montré dans la fonction javascript showConfirm(). J'insère la fonction factice showConfirm() en haut de l'entête du Browser.Document qui écrase/supprime la fonction d'origine showConfirm(). Le code est occupé, mais l'idée principale est claire et fonctionne parfaitement.

Questions connexes