2009-09-16 43 views
6

Tôi đang cố gắng tạo một phần mềm để tự động hóa nhiều hình thức điền trên trang web - và tôi đã quyết định sử dụng điều khiển WebBrowser trong System.Windows.Forms. Điều này làm việc tuyệt vời và tôi có thể dễ dàng thao tác các DOM thông qua webbrowser.Document và vv. Tuy nhiên tiếc là trang web mà tôi đang thực hiện tự động hóa có tệp tải lên được chạy bên trong khung nội tuyến - và đây là nơi tôi bị kẹt, tôi chỉ đơn giản là không thể biết cách xử lý các phần tử bên trong DOM của khung nội tuyến.Windows Forms WebBrowser kiểm soát và iframe

Lý tưởng nhất là những gì tôi muốn làm là một cái gì đó như:

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

Và sau đó gửi biểu mẫu bên trong iframe tất nhiên - tuy nhiên không có InnerDocument thuộc tính trên HtmlElement như xa như tôi có thể nhìn thấy, cũng không không có loại mà tôi đã tìm thấy rằng tôi có thể đúc HtmlElement để tôi có thể truy cập DOM bên trong.

Cách thực hiện việc này?

Trả lời

8

Hãy thử sử dụng bộ sưu tập "khung" để thay thế. Từ MSDN:

Các chức năng tố iframe như một tài liệu trong một tài liệu, hoặc như một khung nổi . Bộ sưu tập khung cung cấp quyền truy cập vào nội dung của khung nội tuyến . Sử dụng bộ sưu tập khung hình để đọc hoặc ghi vào các thành phần có trong một khung nội tuyến. Ví dụ, cú pháp cho truy cập vào phong cách backgroundColor của đối tượng cơ thể trong một iframe là:

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

+4

Aha - đó là điều tôi đã quên. Một điều cần lưu ý ở đây là mã bạn đăng ở đây là javascript - mã tương ứng cần thiết cho điều khiển WebBrowser là browser.Document.Window.Frames ["frame"] để lấy phần tử iframe. – kastermester

+0

@kastermester không có .Window dưới browser.document (chỉ cần kiểm tra theo đối tượng trực tiếp) và mã trên không hoạt động (trong VB6 anyway). là có một sự khác biệt giữa .frames [...] và .frames (...) ?? vì vậy (hoặc [tạo sự khác biệt? ive đã thử cả hai không có kết quả. –

Các vấn đề liên quan