Estoy tratando de crear un programa para automatizar más o menos formularios rellenos en una página web, y he decidido usar el control WebBrowser en System.Windows.Forms
. Esto funciona muy bien y puedo manipular fácilmente el DOM a través de webbrowser.Document
y así sucesivamente. Sin embargo, lamentablemente, el sitio en el que estoy haciendo la automatización tiene una carga de archivos que se ejecuta dentro de un iframe, y aquí es donde estoy atascado, simplemente no puedo encontrar la manera de manipular elementos dentro del DOM del iframe.Windows Forms Control e iframes de WebBrowser
Lo ideal sería que lo que me gustaría hacer es algo como:
HtmlElement iframe = browser.Document.GetElementById("iframe_id");
iframe.InnerDocument.GetElementById("file_upload_input").SetAttribute("value", "myfile.txt");
Y a continuación, enviar el formulario dentro del marco flotante, por supuesto, - sin embargo no hay InnerDocument
atributo en HtmlElement
por lo que yo puedo ver, ni ningún tipo que he encontrado que puedo convertir HtmlElement
para que pueda acceder al DOM interno.
¿Cómo se hace esto?
Aha - eso era algo que había olvidado. Una cosa a tener en cuenta aquí es que el código que publicaste aquí es javascript: el código correspondiente necesario para el control WebBrowser es browser.Document.Window.Frames ["frame"] para obtener el elemento iframe. – kastermester
@kastermester no hay .Window debajo de browser.document (simplemente marcado en el objeto vivo) y el código anterior no funciona (en VB6 de todos modos). ¿Hay alguna diferencia entre .frames [...] y .frames (...)? entonces (o [¿hacer una diferencia? ive intenté tanto en vano]. –