2009-09-16 3 views
6

웹 페이지에서 양식 채우기를 자동화하기위한 소프트웨어를 만들려고합니다. System.Windows.Forms에서 WebBrowser 컨트롤을 사용하기로 결정했습니다. 위대한 작품과 DOM 통해 webbrowser.Document 등 조작 할 수 있습니다. 그러나 불행히도 내가 자동화하고있는 사이트에는 iframe 내부에서 실행되는 파일 업로드가 있습니다. 여기는 내가 멈추는 부분입니다. iframe의 DOM 내부에서 요소를 조작 할 수있는 방법을 간단하게 해결할 수 없습니다. 내가하고 싶은 이상적으로 어떤Windows Forms WebBrowser 컨트롤 및 iframe

이 같은 것입니다 :

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

그리고 물론 iframe을 내부의 양식을 제출 - 그러나 지금까지의 내가 볼 수 HtmlElement에는 InnerDocument 속성이 존재하지 않으며 내가 내부 DOM에 액세스 할 수 있도록 HtmlElement을 캐스팅 할 수있는 유형이 없습니다.

어떻게 수행됩니까?

답변

8

대신 "프레임"컬렉션을 사용해보십시오. MSDN 가입일 :

문서 내의 문서 또는 플로팅 프레임 등과 같은 IFRAME 요소 기능한다. 프레임 컬렉션 은 iframe의 콘텐츠에 대한 액세스를 제공합니다. frames 컬렉션을 사용하여 에 포함 된 요소를 읽거나 쓰십시오. 예를 들어, iframe에 본체 객체의 backgroundColor 스타일 액세스 대한 구문은 다음

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

+4

아하 - 그건 내가 잊어 버린 것이 었습니다. 한 가지주의해야 할 것은 여기서 게시 한 코드는 javascript입니다. WebBrowser 컨트롤에 필요한 해당 코드는 iframe 요소를 가져 오기 위해 browser.Document.Window.Frames [ "frame"]입니다. – kastermester

+0

@kastermester browser.document 아래에 .Window가 없습니다. (라이브 객체 아래에서 체크 됨) 위 코드는 VB6에서 작동하지 않습니다. .frames [...]와 .frames (...) 사이에 차이가 있습니까 ?? 그래서 (또는 차이를 만들어라! ive는 아무 소용이 없어도 노력했다. –

관련 문제