Элемент управления Windows Forms WebBrowser и встроенные фреймы - PullRequest
6 голосов
/ 17 сентября 2009

Я пытаюсь создать программный продукт для более или менее автоматизации заполнения форм на веб-странице - и я решил использовать элемент управления WebBrowser в System.Windows.Forms. Это прекрасно работает, и я могу легко манипулировать с DOM до webbrowser.Document и так далее. Однако, к сожалению, на сайте, на котором я делаю автоматизацию, есть загрузка файла, которая выполняется внутри iframe - и вот где я застрял, я просто не могу понять, как можно манипулировать элементами внутри DOM iframe. *

В идеале я хотел бы сделать что-то вроде:

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

И затем, конечно, отправьте форму внутри iframe - однако на HtmlElement, насколько я вижу, нет атрибута InnerDocument, и я не нашел ни одного типа, который мог бы привести к HtmlElement, чтобы Я могу получить доступ к внутренней DOM.

Как это сделать?

1 Ответ

8 голосов
/ 17 сентября 2009

Попробуйте использовать коллекцию кадров. От MSDN :

Элемент iframe функционирует как документ в документе, или как плавающая рама. Коллекция рамок обеспечивает доступ к содержимому IFrame. Используйте коллекцию кадров для читать или писать в элементы, содержащиеся в iframe. Например, синтаксис для доступ к стилю backgroundColor объект body в iframe:

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

...