Contrôle et iframes Windows Forms WebBrowser

J’essaie de créer un logiciel pour automatiser plus ou moins les remplissages de formulaires sur une page Web – et j’ai décidé d’utiliser le contrôle WebBrowser dans System.Windows.Forms . Cela fonctionne très bien et je peux facilement manipuler le DOM via webbrowser.Document et ainsi de suite. Cependant, malheureusement, le site sur lequel je fais de l’automatisation a un téléchargement de fichier qui est exécuté dans un iframe – et c’est là que je suis bloqué, je ne peux tout simplement pas savoir comment manipuler des éléments dans le DOM de l’iframe.

Idéalement, ce que je voudrais faire, c’est quelque chose comme:

 HtmlElement iframe = browser.Document.GetElementById("iframe_id"); iframe.InnerDocument.GetElementById("file_upload_input").SetAtsortingbute("value", "myfile.txt"); 

Et puis, bien sûr, soumettez le formulaire à l’intérieur de l’iframe – cependant, pour autant que je InnerDocument il n’y a pas d’atsortingbut InnerDocument sur HtmlElement , ni de type que je trouve capable de HtmlElement pour pouvoir accéder au DOM interne.

Comment ça se passe?

Essayez plutôt d’utiliser la collection “frames”. De MSDN :

L’élément iframe fonctionne comme un document dans un document ou comme un cadre flottant. La collection frames permet d’accéder au contenu d’un iframe. Utilisez la collection de frameworks pour lire ou écrire sur les éléments contenus dans un iframe. Par exemple, la syntaxe d’access au style backgroundColor de l’object body dans un iframe est la suivante:

sColor = document.frames (“sFrameName”). document.body.style.backgroundColor;